LNK2001错误,其中包含命名空间内的变量

时间:2013-10-20 18:54:36

标签: c++ variables namespaces lnk2001

我有2个文件:

  1. tier1.h

  2. tier1.cpp

  3. 在tier1.h我有:

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

    在tier1.cpp中定义了函数。一些函数位于imcoicated名称空间中,例如:universal :: extG ::。这些函数使用的是变量命名空间中的变量。

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

    当我尝试编译程序时,它给出了指向变量命名空间中找到的变量的错误。到处都是错误。这是它的外观:

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

    问题出在哪里?

1 个答案:

答案 0 :(得分:1)

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

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

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

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