从Windows上的lib文件中删除符号

时间:2014-03-20 11:15:45

标签: c++ c visual-c++ linker

符号碰巧在两个第三方库中定义,即在我的情况下,zlib以某种方式将其版权字符串都包含在其中。

我检查了这个版权字符串,它是一个带有版权声明的无害的全局静态字符串。

但是,由于此原因我无法联系。

有没有一种简单的方法可以在其中一个库中删除它?

这是错误:

zlib_mdd.lib(deflate.obj) : error LNK2005: _deflate_copyright already defined in libboost_zlib-vc110-mt-gd-1_50.lib(deflate.obj)

1 个答案:

答案 0 :(得分:1)

一种有点脏但有效的方法是使用binaray编辑器(例如PsPad)手动修改其中一个.lib文件中的符号。

只需将_deflate_copyright更改为例如_deflate_copyrigXX。字符不得删除但必须替换

请勿替换符号名称的 start 处的字符(例如,将_deflate_copyright替换为_Xeflate_copyright,因为这会混淆链接器的内部搜索算法。