我已经成功使用Microsoft C++编译了Clang,并尝试编译一个hello world测试程序;它可以成功生成一个目标文件,但连接标准库仍然是一个难点:
hello-202520.o : error LNK2019: unresolved external symbol _printf referenced in function _main
LINK : error LNK2001: unresolved external symbol _mainCRTStartup
之前有一些评论称Clang尚未完全支持Windows链接,但我认为这些评论已经过时了。实际上,现在它似乎能够生成符合Windows格式的目标文件:
clang -c hello.c
ren hello.o hello.obj
link hello.obj
虽然看起来文件格式是正确的,但是仍然出现了未解决的外部符号错误,这可能是因为微软编译器标记其输出目标文件需要链接的标准库,而Clang没有做到这一点,通过查看各自目标文件的十六进制转储可以证实这一点,并给出使用链接器命令行的提示:
link /defaultlib:libcmt /defaultlib:oldnames hello.obj
我原本对此有很高的期望,但遗憾的是,它仍然显示相同的“未解决的外部符号错误”。
我还缺少什么?