C++ extern 无法解析的符号错误LNK2001

c++ extern unresolved symbol error LNK2001

提问人:Rudy01 提问时间:8/10/2014 更新时间:8/10/2014 访问量:955

问:

我有这样的东西:

--includes.h
extern int count;

--main.cpp
#include "includes.h"
int count = 4;

--other.cpp
#include "includes.h"
cout<<count; // will output 4

但是当我这样做时,编译器出错并显示以下消息:

error LNK2001: unresolved external symbol "int count" (?count@@3HA)

知道我为什么会得到这个吗?

在不同文件之间共享变量的最佳方式是什么? 如何在一个文件中定义使用变量,并在另一个文件中修改相同的变量?

C++ extern 未解析 - 外部

评论

0赞 Qix - MONICA WAS MISTREATED 8/10/2014
使用函数和标头。
1赞 chris 8/10/2014
是否链接到相应的对象文件?可能不是。
0赞 WhozCraig 8/10/2014
两个 .cpp 文件都在同一个项目中,对吧
0赞 Rudy01 8/10/2014
是的,它们在同一个项目中
0赞 CB Bailey 8/10/2014
请说明您是如何调用链接器的。

答:

-2赞 Adrián Arroyo Calle 8/10/2014 #1

您应该在标头中定义一个 extern int,并在一个文件中定义一个 int,但此文件不应引用标头

评论

0赞 WhozCraig 8/10/2014
在定义 .cpp 文件中包含声明标头不是问题,即使使用 decl。extern
-1赞 Quest 8/10/2014 #2

您可以尝试放入未命名的命名空间

namespace{
    extern int count = -1;
};

CPP:

std::cout << count;

评论

0赞 Rudy01 8/10/2014
我只是厌倦了它,但我收到类似的错误说:未解析的外部符号“intanonymous namepsace::count
0赞 Samer 8/10/2014 #3

main.cpp

#include <iostream>
int y; 
int testy();
int _tmain(int argc, _TCHAR* argv[])
{

     std::cout << y;
     std::cout<<testy();
     std::cout << y;
    return 0;
}

来源:.cpp

extern int y;

int testy(){return y++;}

这应该有助于了解您的问题......