g ++外部引用错误

Dew*_*wfy 2 c++ g++ declaration extern

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

1.cpp:

#include <string>
#include <iostream>

extern const std::string QWERTY;

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

}
Run Code Online (Sandbox Code Playgroud)

2.cpp:

#include <string>
const std::string QWERTY("qwerty");
Run Code Online (Sandbox Code Playgroud)

没有魔法,我只想将字符串常量放入分隔文件中.在链接时ld产生一个错误:"未定义引用`_QWERTY'"第一个想法将两个声明包装成"extern"C"" - 没有帮助.错误和非c ++ _QWERTY仍然存在.

在此先感谢您的任何建议

180*_*ION 6

看起来你可能正在遇到这个标准:

在C中,没有显式存储类说明符的文件范围内的const限定对象具有外部链接. 在C++中,它具有内部链接.

将此更改为2.cpp:

#include <string>
extern const std::string QWERTY("qwerty");
Run Code Online (Sandbox Code Playgroud)

关于"链接"在这个问题中的含义还有一些更详细的内容 - 什么是C++中的外部链接和内部链接.