加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

Clang,Microsoft链接器和标准库

发布时间:2021-01-27 11:12:33 所属栏目:电商 来源:网络整理
导读:我已经成功地使用Microsoft C构建了Clang,并且我正在尝试编译一个hello world测试用例;它生成一个目标文件,与作为剩余绊脚石的标准库链接: hello-202520.o : error LNK2019: unresolved external symbol _printf referenced in function _mainLINK : error

我已经成功地使用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

…没有barf,所以文件格式似乎是正确的,但仍然得到未解决的外部符号错误.可能的猜测是Microsoft编译器标记其输出目标文件,并指示他们需要链接的标准库,而Clang没有,并且眼睛看到相应目标文件的十六进制转储似乎证实了这一点并给出了一个暗示链接器命令行使用:

link /defaultlib:libcmt /defaultlib:oldnames hello.obj

我对这个阶段寄予厚望,但是它仍然给出了同样未解决的外部符号错误.

我还缺少什么?

解决方法

事实证明Clang默认生成32位代码,但我使用的是64位MSC,并且随着移动到x64,C符号上的前导_已被删除,因此在clang命令行上指定-m64可以完成这项工作.

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读