【问题标题】:c++ extern unresolved symbol error LNK2001c++ extern 未解决的符号错误 LNK2001
【发布时间】:2014-10-03 02:32:19
【问题描述】:

我有这样的事情:

--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)

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

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

【问题讨论】:

  • 使用函数和标题。
  • 您是否链接到相应的目标文件?可能不会。
  • 两个 .cpp 文件在同一个项目中,
  • 是的,他们在同一个项目中
  • 请说明您是如何调用链接器的。

标签: c++ extern unresolved-external


【解决方案1】:

你应该在头文件中定义一个 extern int 并在一个文件中定义一个 int,但是这个文件应该没有对头文件的任何引用

【讨论】:

  • 在定义的 .cpp 文件中包含声明头不是问题,即使使用 extern decl。
【解决方案2】:

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

namespace{
    extern int count = -1;
};

cpp:

std::cout << count;

【讨论】:

  • 我只是厌倦了它,但我收到类似的错误消息:未解析的外部符号“int anonymous namepsace::count
【解决方案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;
}

source.cpp

extern int y;

int testy(){return y++;}

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

【讨论】:

    猜你喜欢
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2014-02-14
    • 2018-08-14
    相关资源
    最近更新 更多