10

我正在寻找 GNU 工具objcopy的 Windows 等价物。我希望将此处发布的建议实施到我的问题中,但是我需要跨平台(Windows、Linux 和 Mac)进行。我在我的谷歌朋友上找不到答案,所以可能需要以不同的方式实施解决方案。谢谢!

4

2 回答 2

6

默认 MSVC 工具的一部分:LIB /EXTRACT提取对象的副本;LIB /REMOVE然后将其从库中删除。

当您将目标文件放回原处时,我认为LIB /DEF /EXPORT:externalName=internalName对您也有好处。

于 2013-11-18T18:09:14.213 回答
0

如果您不介意黑客攻击,则可以在其中一个库 bin 文件中用相同长度的不同名称替换所有冲突名称的实例。这样做需要您自担风险。

例子

// a.h
void doSomething();

// b.h
void doSomething();

我们可以替换doSomethingdoSomethink

在python中它会是这样的:

f = open('b.lib',"rb")
s = f.read()
f.close()
s = s.replace(b'doSomething',b'doSomethink')
f = open('b.lib',"wb")
f.write(s)
f.close()

并相应地修改 b 标头

// b.h
void doSomethink();

请注意,这里我使用了头文件中定义的普通函数名称来匹配二进制文件中的符号,但您可能希望使用完整的损坏名称来防止不必要的替换。

于 2019-01-04T09:00:38.870 回答