Domanda

Sto cercando un equivalente di Windows dello strumento GNU ObjCopy .Sto cercando di implementare il suggerimento pubblicato qui al mio problema, tuttavia ho bisogno di farlo a piattaforma a croce (Windows,Linux e Mac).Non riuscivo a trovare la risposta sul mio amico di Google, quindi forse la soluzione deve essere implementata in modo diverso.Grazie!

È stato utile?

Soluzione

Parte degli utensili MSVC predefiniti: LIB /EXTRACT estrae una copia di un oggetto;LIB /REMOVE quindi rimuove dalla libreria.

Penso che anche LIB /DEF /EXPORT:externalName=internalName sia vantaggioso per te, quando rimetti il file oggetto in.

Altri suggerimenti

Se non ti dispiace un hack, sostituire tutte le istanze del nome in conflitto da parte di un nome diverso della stessa lunghezza in uno dei file BIN della libreria può funzionare.Fallo ai tuoi rischi.

Esempio

// a.h
void doSomething();

// b.h
void doSomething();
.

Possiamo sostituire doSomething da doSomethink

In Python sarebbe qualcosa come:

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()
.

e modifica la intestazione B di conseguenza

// b.h
void doSomethink();
.

Nota che qui ho usato il nome della funzione normale come definito nell'intestazione per abbinare il simbolo nel binario ma è possibile utilizzare il nome completo monglato invece per evitare sostituzioni indesiderate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top