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并且不带下划线('_')前缀?
你应该使用.DEF文件:
EXPORTS
HTMLayoutClassNameA = HTMLayoutClassNameA
HTMLayoutClassNameW = HTMLayoutClassNameW
HTMLayoutClipboardCopy = HTMLayoutClipboardCopy
...
Run Code Online (Sandbox Code Playgroud)
我们在这里
externalname = internalname
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2332 次 |
| 最近记录: |