__cdecl强制带下划线的前缀

Hop*_*pyx 5 c++ dll export cdecl borland-c++

我的公司为第三方提供了一个DLL,它为他们提供了可用于连接我们应用程序的API函数.DLL是用VC9编写的,API函数使用VC的默认调用约定(__cdecl).第三方围绕此界面构建了应用程序.

我现在的任务是编写DLL的更新版本.我们希望DLL具有与旧的完全相同的接口,因此它们可以互换使用.不幸的是,我们的开发环境现在是CodeGear RAD Studio 2007,因此我必须使用它来编写DLL.

最好的解决方案是使旧的和新的DLL都将其函数导出为__stdcall.然后可以重新链接第三方应用程序以期望__stdcall函数,每个人都会很高兴.不幸的是,由于各种原因,这种情况不太可能发生

或者,我可以将我的DLL中的函数声明为__cdecl.第三方期望__cdecl功能,所以这似乎是一个很好的解决方案.遗憾的是CodeGear坚持在__cdecl函数的名称后附加下划线('_').这意味着第三方应用程序必须进行有条件调用,MyApiFunction(...)或者_MyApiFunction(...)取决于它们使用的DLL.

所以我的问题是,如何从我的新DLL导出API函数,使它们是__cdecl并且带下划线('_')前缀?

c-s*_*ile 7

你应该使用.DEF文件:

EXPORTS
    HTMLayoutClassNameA = HTMLayoutClassNameA
    HTMLayoutClassNameW = HTMLayoutClassNameW
    HTMLayoutClipboardCopy = HTMLayoutClipboardCopy
    ...
Run Code Online (Sandbox Code Playgroud)

我们在这里

externalname = internalname 
Run Code Online (Sandbox Code Playgroud)