【发布时间】:2015-08-30 10:00:28
【问题描述】:
我的经验是使用 Delphi XE2,我不熟悉 MS Visual C/C++。我正在尝试将一些 MS Visual C++ 代码编译成可以从 Delphi 使用的 DLL。
Delphi找不到编译好的DLL导出函数。
使用十六进制编辑器,DLL 导出表类似于以下 sn-ps,并且没有以 NULL 结尾的函数名称(NULL ASCII 字符位于 eol“Z”之后):
?MM_End@@YAH_N@Z
?MM_GetCurrentPosition@@YAHPAN0000@Z
?MM_GetWindow@@YAHPAN000@Z
?MM_MarkGetLinkFile@@YAHPAXPADH@Z
?MM_Start@@YAH_N@Z
C++ 头代码如下所示:
...
#define MMAPI_API __declspec(dllexport)
...
MMAPI_API int MM_Start(bool run_mmnav);
MMAPI_API int MM_End(bool close_mmnav);
...
参考https://msdn.microsoft.com/en-AU/library/dt232c9t%28v=vs.90%29.aspx。我尝试了 __stdcall 和 _cdecl 的几种变体,但无法让 MS Visual C++ 编译带有 NULL 终止字符串的导出表。
【问题讨论】:
-
这里有人说反对票应该附有解释。我不同意,但在这种情况下,反馈是值得的。下面的大卫提供了很多帮助,但你对他很粗鲁。在网络上发布您的技术问题时,值得穿上 Kevlar 夹克!批评会发生,只要是文明的,它仍然可以是建设性的。