铿锵"你好,世界!" Windows中的链接错误

Che*_*Alf 11 c++ std clang linker-errors clang++

我刚下载了CLang源代码,使用CMake创建了一个Visual C++ 10 IDE工作区,并构建了Visual C++ 10.0(express)中的所有内容.

现在我在hello world上遇到了一堆链接器错误:

d:\dev\test> type con >foo.cpp
#include <iostream>
using namespace std;
int main() { cout << "Hello, cling-clong world!" << endl; }
^Z

d:\dev\test> clang++ foo.cpp
foo-839435.o : error LNK2019: unresolved external symbol __ZSt4cout referenced in function _main
foo-839435.o : error LNK2019: unresolved external symbol __ZdlPv referenced in function __ZNSt14error_categoryD0Ev
foo-839435.o : error LNK2019: unresolved external symbol __ZSt18uncaught_exceptionv referenced in function __ZNSo6sentry
D2Ev
foo-839435.o : error LNK2019: unresolved external symbol ___cxa_rethrow referenced in function __ZNSt8ios_base5clearEib
foo-839435.o : error LNK2019: unresolved external symbol ___cxa_allocate_exception referenced in function __ZNSt8ios_base5clearEib
foo-839435.o : error LNK2019: unresolved external symbol ___cxa_throw referenced in function __ZNSt8ios_base5clearEib
foo-839435.o : error LNK2019: unresolved external symbol __ZSt17iostream_categoryv referenced in function __ZSt15make_er

那我该怎么办呢?

rub*_*nvb 5

如果您想在 Windows 上试验 Clang,我建议使用 MinGW 构建版本,就像我在这里提供的版本(或者使用您最喜欢的 MinGW 工具链自行构建):

您将需要gccclang软件包(那些没有 linux/mac/cygwin 后缀的软件包)并将它们解压到同一目录。Clang使用gcc来链接,并且可以链接到GCC的libstdc++,几乎可以让你访问C++标准库。例外情况适用于 32 位版本。不过,我对调试信息没有任何运气。

我们正在努力为 Clang 提供更好的 MS 支持,但这是一项进展缓慢的任务。

  • 我认为这是“解决方案”,除了您提供的有关异常的信息意味着更好的解决方案是不安装该东西(还)。不管怎么说,还是要谢谢你。 (2认同)
  • @Archie:libcxx 可以在 Windows 上使用 MinGW-w64 构建的 Clang 构建(我已经处理了),但这并不能满足你所​​需的一切,比如异常处理、低级运行时函数等......有两个这里的侧面:1)让 Clang 像 MSVC++ 一样进行破坏,同时生成相同的 rtti 和异常处理代码,2)使 Clang 镜像 GCC 并链接到它的库,我就是这么做的,它适用于 32 位。要使 MSVC 构建的 Clang 工作起来,需要 LLVM 对 MSVC 风格代码生成的大力支持,而这目前还不存在。 (2认同)