Un objcopy équivalent pour Windows?(Hack pour clash lib symboles)
Question
Je suis à la recherche d'un équivalent Windows de l'outil GNU objcopy.Je suis à la recherche pour mettre en œuvre les suggestion posté ici pour mon problème, cependant j'ai besoin de le faire multi-plateforme (Windows, Linux et Mac).Je ne pouvais pas trouver la réponse sur mon ami google, donc peut-être que la solution doit être mis en œuvre différemment.Merci!!!!
La solution
Une partie de la valeur par défaut MSVC de l'outillage: LIB /EXTRACT
extrait d'une copie d'un objet; LIB /REMOVE
puis le supprime de la bibliothèque.
Je pense LIB /DEF /EXPORT:externalName=internalName
aussi serait bénéfique pour vous, lorsque vous placez le fichier de l'objet en retour.
Autres conseils
Si vous n'avez pas l'esprit un hack, le remplacement de toutes les occurrences du nom en conflit par un autre nom de la même longueur dans l'un de la bibliothèque bin fichier de travail.Le faire à vos propres risques.
Exemple
// a.h
void doSomething();
// b.h
void doSomething();
Nous pouvons remplacer doSomething
par doSomethink
En python, il serait quelque chose comme:
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()
Et modifier b tête conséquence
// b.h
void doSomethink();
Notez que j'ai utilisé ici le plaine de nom de fonction tel que défini dans l'en-tête correspondant au symbole dans le binaire, mais vous pourriez vouloir utiliser la totalité de la déformation du nom de la place pour éviter les remplacements.