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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top