Я ищу Windows эквивалент инструмента GNU objcopy. Я ищу для реализации предложение размещено здесь к моей проблеме, однако мне нужно сделать это кросс-платформенный (Windows, Linux и Mac). Я не смог найти ответ на мой друг Google, поэтому, возможно, решение должно быть реализовано по-другому. Спасибо!
Часть стандартного инструментария MSVC: LIB /EXTRACT
извлекает копию объекта; LIB /REMOVE
затем удаляет его из библиотеки.
Я думаю LIB /DEF /EXPORT:externalName=internalName
также будет полезно для вас, когда вы положите объектный файл обратно в.
Если вы не возражаете против взлома, замена всех экземпляров конфликтующего имени другим именем одинаковой длины в одном из файлов библиотеки библиотек может работать. Делайте это на свой страх и риск.
пример
// a.h
void doSomething();
// b.h
void doSomething();
Мы можем заменить 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();
Обратите внимание, что здесь я использовал простое имя функции, как определено в заголовке, чтобы соответствовать символу в двоичном файле, но вы можете вместо этого использовать полное искаженное имя, чтобы предотвратить нежелательные замены.