我正在尝试执行以前生成的.obj文件的链接(使用最新版本的MSVC)。
创建这些.obj时,指定源代码:
#pragma comment(lib, ...)
因此,链接器正在尝试链接源中指定的静态库。有没有办法指示链接器忽略这些库,所以我可以指定自己的?
例如,如果一个消息来源做了以下事情:#pragma comment(lib, foo.lib)
在链接时,我希望链接器忽略'foo.lib',而是链接'bar.lib'。
答案 0 :(得分:1)
为什么不更改源(#pragma
指令)?
来自comment
MSDN页面:
LIB
将库搜索记录放在目标文件中。此注释类型必须附带一个commentstring参数,该参数包含您希望链接器搜索的库的名称(以及可能的路径)。库名称遵循目标文件中的默认库搜索记录;链接器搜索此库,就像您在命令行上命名它一样,前提是该库未使用/ nodefaultlib指定。您可以在同一源文件中放置多个库搜索记录;每条记录都以与源文件中遇到的顺序相同的顺序出现在目标文件中。
如果默认库和添加的库的顺序很重要,使用/ Zl开关进行编译将阻止将默认库名称放在目标模块中。然后可以使用第二个注释编译指示在添加的库之后插入默认库的名称。使用这些编译指示列出的库将以与源代码中相同的顺序显示在对象模块中。
您还可以使用NODEFALTLIB
链接器选项阻止foo.lib
链接,并像其他lib文件一样指定bar.lib
(即通过“链接器属性”窗格)。
否则,请将bar.lib
重命名为foo.lib
(一个厚脸皮的解决方案)。