命名空间内的变量LNK2001错误

Error LNK2001 with variables inside namespace

本文关键字:LNK2001 错误 变量 命名空间      更新时间:2023-10-16

我有 2 个文件:

  1. 第1.H层

  2. 第 1 层.cpp

在 tier1.h 中,我有:

//code
namespace variab
{
  int x...; float tpl...; //etc
}
namespace universal
{
  using namespace variab;
  //some functions prototypes
}

在第 1 层中.cpp定义了函数。一些函数位于无限制的命名空间中,例如:universal::extG::。这些函数使用在 variab 命名空间中找到的变量。

在要找到 main 的源文件中,包含 tier1.h。

当我尝试编译程序时,它给了我指向在 variab 命名空间中找到的变量的错误。错误在任何地方都是一样的。这是它的外观:

error LNK2001: unresolved external symbol "int * variab::st" (?st@variab@@3PAHA)

问题出在哪里?

在头文件中,您将声明命名空间中的变量。您只需使用 extern 关键字声明它们:

namespace variab
{
    extern int x;
    extern float tpl;
    // etc...
}

然后在源文件中执行定义:

namespace variab
{
    int x;
    float tpl;
    // etc...
}