Windowsに同等のObjCopy?(libシンボルを衝突させるためのハック)
質問
GNUツール objcopy のWindowsと同等のWindowsを探しています。私は問題に投稿されたを実行する必要がありますが、それをクロスプラットフォーム(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();
.
ここでは、ヘッダーに定義されているプレーン関数名をバイナリ内のシンボルと一致させるだけでなく、無駄な交換を防ぐためにフルマングル名を使用することをお勧めします。
所属していません StackOverflow