__cdecl forzar prefijo con guión bajo

Mi compañía proporciona a un tercero una DLL que les proporciona funciones API que pueden usar para conectarse a nuestra aplicación. La DLL se escribió en VC9 y las funciones de la API utilizaron la convención de llamadas predeterminada de VC (__cdecl). El tercero ha creado su aplicación en torno a esta interfaz.

Tengo ahora la tarea de escribir una versión actualizada de la DLL. Queremos que la DLL tenga exactamente la misma interfaz que la anterior para que se puedan usar indistintamente. Desafortunadamente, nuestro entorno de desarrollo ahora es CodeGear RAD Studio 2007, así que tengo que escribir la DLL usando eso.

La mejor solución sería hacer que las DLL antiguas y nuevas exporten sus funciones como __stdcall. La aplicación de terceros se podría volver a vincular para esperar las funciones __stdcall y todos estarían contentos. Desafortunadamente, por varias razones, es poco probable que esto suceda.

Alternativamente, puedo declarar las funciones en mi DLL como __cdecl. El tercero espera funciones __cdecl, por lo que esta parece ser una buena solución. Desafortunadamente, CodeGear insiste en agregar un guión bajo ('_') al nombre de las funciones __cdecl. Esto significa que la aplicación de terceros tendría que hacer una llamada condicional aMyApiFunction(...) o_MyApiFunction(...), dependiendo de qué DLL utilicen.

Así que mi pregunta es, ¿cómo puedo exportar las funciones API de mi nueva DLL de tal manera que sean __cdecl y seann prefijado con un guión bajo ('_')?

Respuestas a la pregunta(3)

Su respuesta a la pregunta