0

我有 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
}

在 tier1.cpp 中定义了函数。一些函数位于重叠的命名空间中,例如:universal::extG::。这些函数使用在 variab 命名空间中找到的变量。

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

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

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

问题出在哪里?

4

1 回答 1

1

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

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

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

namespace variab
{
    int x;
    float tpl;
    // etc...
}
于 2013-10-20T18:58:59.537 回答