我有在g++上复制的问题。 VC++不会遇到任何问题。
所以我有2个cpp文件:

1.cpp:

#include <string>
#include <iostream>

extern const std::string QWERTY;

int main()
{
    std::cout << QWERTY.c_str() << std::endl;

}

2.cpp:
#include <string>
const std::string QWERTY("qwerty");

没什么魔术,我只想将字符串常量放入单独的文件中。在链接时间ld产生错误:“未定义对'_QWERTY'的引用”
第一个将两个声明都包装到“extern“C”“中的想法-没有帮助。错误和非c++ _QWERTY仍然存在。

在此先感谢您的任何建议

最佳答案

看来您可能正在碰到此标准的这一部分:



将此更改更改为2.cpp:

#include <string>
extern const std::string QWERTY("qwerty");

关于这个问题中的“链接”的更多详细信息-What is external linkage and internal linkage in C++

关于c++ - g++外部引用错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1404394/

10-11 23:16