__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 ('_')?