C++ Windows的等效对象复制?(冲突库符号的黑客)

C++ Windows的等效对象复制?(冲突库符号的黑客),c++,collision,symbols,libs,C++,Collision,Symbols,Libs,我正在寻找与GNU工具相当的Windows工具。我希望实现解决我的问题的方法,但是我需要跨平台(Windows、Linux和Mac)来实现。我在我的谷歌朋友身上找不到答案,所以也许这个解决方案需要以不同的方式实现。谢谢大家! 默认MSVC工具的一部分:LIB/EXTRACT提取对象的副本LIB/REMOVE然后将其从库中删除 我认为LIB/DEF/EXPORT:externalName=internalName也会对您有所帮助,当您将对象文件放回时。如果您不介意黑客攻击的话,在一个库bin文件中

我正在寻找与GNU工具相当的Windows工具。我希望实现解决我的问题的方法,但是我需要跨平台(Windows、Linux和Mac)来实现。我在我的谷歌朋友身上找不到答案,所以也许这个解决方案需要以不同的方式实现。谢谢大家!

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


我认为
LIB/DEF/EXPORT:externalName=internalName
也会对您有所帮助,当您将对象文件放回时。

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

范例

// a.h
void doSomething();

// b.h
void doSomething();
我们可以用
doSomethink

在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();

注意,这里我使用了在头部中定义的普通函数名来匹配二进制中的符号,但是您可能希望使用满过的名称来防止不必要的替换。< /p>用于VisualC++生成的文件,或者例如在明文/ CygWin构建文件中使用。在拿铁案中,应该有一个<代码> Objix< /Cord>,你可以直接使用它的VisualC++生成的文件。我不知道这是否是你的选择,但是你可以从ELF Linux版本开始。使用objcopy,然后使用此处发布的工具尝试转换为COFF/PE:agner.org/optimize.Will这允许我在符号上添加前缀吗?@Deathicon:还没有尝试过,但我相信这就是

EXPORT:prefix\u Symbol=Symbol
所做的。我遇到了这个问题,无法让您的解决方案使用静态库。您是否有演示此解决方案的链接?