Autre 32 bits .def fichier de 64 bits
-
25-09-2019 - |
Question
Dans mon entreprise, nous utilisons les fichiers .def
pour spécifier les symboles qui doivent être exportés. (Je voudrais pouvoir utiliser une technique plus moderne et automatisée, malheureusement, les gars qui décident vivent de retour dans les années quatre-vingt).
L'écriture d'un fichier .def
à la main, à l'aide de copier-coller manuel est ennuyeux et, mais jusqu'à présent, je peux sujette aux erreurs vivre avec.
Cependant, je dois écrire un fichier .def
similaire pour la version 64 bits de la DLL. La décoration de nom de plusieurs fonctions a changé et je me demande s'il y a un moyen de générer un fichier .def
pour la version 64 bits de la version 32 bits.
Connaissez-vous un outil qui pourrait me aider? Est-ce encore réaliste? Je ne me sens vraiment pas comme je veux le faire à la main une fois de plus. Toute solution, même celle qui consiste à coder mon propre outil, est la bienvenue.
Merci.
La solution
Je serais probablement __declspec (dllexport) les symboles que je voulais, compiler, puis exécutez dumpbin / exports sur la DLL résultant pour obtenir les noms déchiquetés, et vous pouvez retirer le __declspec et faire un fichier def.
Autres conseils
Dites à votre patron pour revenir aux années 80. Sérieusement, ce n'est pas un moyen portable pour exporter les noms de symboles. Que faire si le compilateur C de modifier le nom système mutiler? Ensuite, vous auriez à faire (ce jcopenha dit) tout recommencer. Que faire si vous ne travaillez pas là quand il arrive? Est-ce une autre pauvre âme va devoir passer un temps précieux pour savoir quoi et comment le faire? Je voudrais essayer de convaincre le patron d'utiliser __declspec(dllexport)
. Il va gagner du temps maintenant, et peut-être dans l'avenir.
Je suppose que vous exportez des classes et des fonctions surchargées. Si vous n'êtes pas, alors j'exporter les fonctions avec les noms C au lieu. Ces noms ne sont pas mutilée, et ne changera pas.