__cdecl forçando o prefixo com sublinhado

@My empresa fornece a terceiros uma DLL que fornece funções de API que eles podem usar para se conectar ao nosso aplicativo. A DLL foi gravada no VC9 e as funções da API usavam a convenção de chamada padrão do VC (__cdecl). O terceiro construiu seu aplicativo em torno dessa interface.

Fui encarregado de escrever uma versão atualizada da DLL. Queremos que a DLL tenha exatamente a mesma interface que a antiga, para que possa ser usada de forma intercambiável. Infelizmente, nosso ambiente de desenvolvimento agora é o CodeGear RAD Studio 2007, então eu tenho que escrever a DLL usando iss

A melhor solução seria fazer com que as DLLs antigas e novas exportassem suas funções como __stdcall. O aplicativo de terceiros poderia ser vinculado novamente para esperar funções __stdcall e todos ficariam felizes. Infelizmente, por várias razões, é improvável que isso aconteça.

Alternativamente, posso declarar as funções na minha DLL como __cdecl. Os terceiros esperam funções __cdecl, portanto essa parece ser uma boa solução. Infelizmente, o CodeGear insiste em acrescentar um sublinhado ('_') ao nome das funções __cdecl. Isso significa que o aplicativo de terceiros precisaria fazer uma chamada condicionalMyApiFunction(...) ou_MyApiFunction(...), dependendo da DLL que eles usa

Então, minha pergunta é: como posso exportar as funções de API da minha nova DLL de forma que elas sejam __cdecl e sejamnã prefixado com um sublinhado ('_')?

questionAnswers(3)

yourAnswerToTheQuestion