扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
或者 link main.obj 来生成可执行文件main.exe,这两个命令是等价的。但是如果你用 link main.obj libcd.lib 的话,链接器会给出一个警告: "warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library",因为你显式指定的标准库版本与目标文件的缺省值不一致。通常来说,应该保证链接器合并的所有目标文件指定的缺省标准库版本一致,否则编译器一定会给出上面的警告,而LNK2005和LNK1169链接错误则有时会出现有时不会。那么这个有时到底是什么时候?呵呵,别着急,下面的一切正是为喜欢追根究底的你准备的。 建一个源文件,就叫mylib.c,内容如下: /* mylib.c */ void foo() 用 cl /c /MLd mylib.c
命令编译,注意/MLd选项是指定libcd.lib为默认标准库。lib.exe是VC自带的用于将目标文件打包成程序库的命令,所以我们可以用 lib /OUT:my.lib mylib.obj 将mylib.obj打包成库,输出的库文件名是my.lib。接下来把main.c改成: /* main.c */ int main() 用 cl /c main.c |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者