分类: C/C++
2008-04-15 21:35:10
来源:Blog 作者:soloist |
或者 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 |