使用clang cl编译是可行的,但链接无法找到基本的libc符号

使用clang cl编译是可行的,但链接无法找到基本的libc符号,clang,msvc12,Clang,Msvc12,对于编译为LLVM IR的语言(),我正在尝试启用对Windows的编译。我想启用与MSVC编译的东西的链接,所以我想使用MSVC目标三元组。我安装了MSVC Community 2013,并有一个cmd.exe窗口,在该窗口中我运行了附带的vcvars32.bat脚本,因此在PATH中添加了大量MSVC内容。但是,在尝试编译时,我遇到以下链接器错误: hello-163edf.obj : error LNK2019: unresolved external symbol malloc refe

对于编译为LLVM IR的语言(),我正在尝试启用对Windows的编译。我想启用与MSVC编译的东西的链接,所以我想使用MSVC目标三元组。我安装了MSVC Community 2013,并有一个
cmd.exe
窗口,在该窗口中我运行了附带的
vcvars32.bat
脚本,因此在
PATH
中添加了大量MSVC内容。但是,在尝试编译时,我遇到以下链接器错误:

hello-163edf.obj : error LNK2019: unresolved external symbol malloc referenced in function runa.malloc
hello-163edf.obj : error LNK2019: unresolved external symbol free referenced in function runa.free
hello-163edf.obj : error LNK2019: unresolved external symbol memcpy referenced in function runa.memcpy
hello-163edf.obj : error LNK2019: unresolved external symbol write referenced in function runa.unhandled
hello-163edf.obj : error LNK2019: unresolved external symbol exit referenced in function runa.clean
hello-163edf.obj : error LNK2019: unresolved external symbol _Unwind_RaiseException referenced in function runa.raise
hello-163edf.obj : error LNK2019: unresolved external symbol snprintf referenced in function float.__str__
hello-163edf.obj : error LNK2019: unresolved external symbol strlen referenced in function uint.__str__
hello-163edf.obj : error LNK2019: unresolved external symbol __chkstk referenced in function str.__eq__
hello-163edf.obj : error LNK2019: unresolved external symbol strncmp referenced in function str.__eq__
hello-163edf.obj : error LNK2001: unresolved external symbol _fltused

我理解关于
\u Unwind\u RaiseException
,这可能不符合这个目标,但我不清楚为什么像
malloc()这样的基本libc东西
找不到。

通过在我的编译器调用末尾添加
/link msvcrt.lib
解决了大部分问题。

根据您的生成过程和visual studio版本,您可能需要msvcrt、vcruntime和ucrt。有关更深入的解释,请参阅本文: