Pregunta

En mi compañía utilizamos archivos .def para especificar los símbolos que deben ser exportados. (Me gustaría poder utilizar una técnica más moderna y automatizada, por desgracia, los chicos que deciden volver vivo en los años ochenta).

Creación de un archivo .def a mano, usando el manual de copiar y pegar es aburrido y propenso a errores, pero hasta ahora puedo vivir con ello.

Sin embargo, tengo que escribir un archivo .def similar para la versión de 64 bits de la DLL. La decoración de nombres de varias funciones cambió y me pregunto si hay una manera de generar un archivo .def para la versión de 64 bits de la versión de 32 bits.

¿Es usted consciente de cualquier herramienta que me podría ayudar? Es esto realista? Realmente no me siento como que quiero hacerlo a mano una vez más. Cualquier solución, incluso uno que implica la codificación de mi propia herramienta, es bienvenido.

Gracias.

¿Fue útil?

Solución

Me probablemente __declspec (dllexport) los símbolos que quería, compilación y ejecute dumpbin / exportaciones en la DLL resultante para obtener los nombres alterados, y luego se puede quitar el __declspec y hacer un archivo .def.

Otros consejos

Informe a su jefe para volver a los años 80. En serio, esto no es una manera portátil para nombres de símbolos de exportación. ¿Qué pasa si el compilador de C ++ cambia el nombre mangling esquema? Entonces habría que hacer esto (lo dicho jcopenha) de nuevo. ¿Qué pasa si usted no trabaja allí cuando suceda? Es otra alma pobre va a tener que pasar un tiempo valioso para averiguar qué y cómo hacerlo? Me gustaría tratar de convencer al jefe para uso __declspec(dllexport). Se ahorrará tiempo, y posiblemente en el futuro.

Te estoy asumiendo exportando clases y funciones sobrecargadas. Si no es así, entonces me gustaría exportar las funciones con nombres C en lugar. Esos nombres no están destrozados, y no la cambiarán.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top