Converter 32 bits .def Arquivo em 64 bits
-
25-09-2019 - |
Pergunta
Na minha empresa, usamos .def
arquivos para especificar os símbolos que precisam ser exportados. (Eu gostaria de poder usar uma técnica mais moderna e automatizada, infelizmente, os caras que decidem ao vivo nos anos oitenta).
Escrevendo a .def
Arquivo manualmente, o uso de cola de cópia manual é chato e propenso a erros, mas até agora posso viver com ele.
No entanto, eu preciso escrever um semelhante .def
Arquivo para a versão de 64 bits da DLL. A decoração do nome de várias funções mudou e eu me pergunto se existe uma maneira de gerar um .def
Arquivo para a versão de 64 bits da versão de 32 bits.
Você está ciente de alguma ferramenta que possa me ajudar? Isso é ainda realista? Eu realmente não sinto que quero fazer isso manualmente mais uma vez. Qualquer solução, mesmo uma que envolva codificar minha própria ferramenta, é bem -vinda.
Obrigada.
Solução
Eu provavelmente __declspec (dllexport) os símbolos que eu queria, compilar e depois executaria o dumpbin /exporta na DLL resultante para obter os nomes mutilados e, em seguida, você pode remover o __declspec e fazer um arquivo .def.
Outras dicas
Diga ao seu chefe para voltar aos anos 80. Sério, essa não é uma maneira portátil de exportar nomes de símbolos. E se o compilador C ++ mudar o nome do esquema de alcance? Então você teria que fazer isso (o que Jcopenha disse) novamente. E se você não trabalhar lá quando isso acontecer? Outra pobre alma terá que gastar tempo valioso para descobrir o que e como fazer isso? Eu tentaria convencer o chefe a usar __declspec(dllexport)
. Agora vai economizar tempo e, possivelmente, tempo no futuro.
Suponho que você esteja exportando classes e funções sobrecarregadas. Se você não estiver, então eu exportaria as funções com nomes C. Esses nomes não são mutilados e não mudarão.