【问题标题】:Remove symbol from lib file on windows从 Windows 上的 lib 文件中删除符号
【发布时间】:2014-03-20 11:15:44
【问题描述】:

一个符号恰好在两个第三方库中定义,即在我的例子中,zlib 不知何故将其版权字符串放入了两个库中。

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

但是,由于这个原因,我无法链接。

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

这是错误:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 2017-11-10
      相关资源
      最近更新 更多