对于编译为LLVM IR的我的语言(Runa),我正在尝试启用到Windows的编译。我想启用与MSVC编译的东西的链接,所以我想使用MSVC目标三元组。我安装了MSVC社区2013,并有一个cmd.exe
窗口,我在其中运行了附带的vcvars32.bat
脚本,因此已将一堆MSVC内容添加到PATH
。但是,在尝试编译时,我收到以下链接器错误:
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
我理解关于_Unwind_RaiseException
的那个,可能不适合这个目标,但我不清楚为什么找不到像malloc()
这样的基本libc的东西。
答案 0 :(得分:1)
通过在编译器调用结束时添加/link msvcrt.lib
来解决大部分问题。
答案 1 :(得分:0)
取决于您的生成过程和Visual Studio的版本,您可能需要msvcrt,vcruntime和ucrt。有关更深入的说明,请参见这篇文章:https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/