综合

解决出现的LNK2005“符号已定义”错误 (4)

2019-09-11 11:51:12来源:励志吧0次阅读

或者

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 */

#include

void foo()

{

printf("%s","I am from mylib!\n");

}

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 */

void foo();

int main()

{

foo();

return 0;

}

cl /c main.c

查看本文来源

小孩子不消化吃什么好
小孩发烧物理降温
小儿拉肚子治疗方法
小孩便秘怎么办快速通便
分享到: