我一直在尝试用VB6可以访问的C / C ++创建DLL,这是正确的,当从VB6应用程序调用函数时,出现错误“ 453在myDllName.dll中找不到DLL入口点myFunctionName”。
搜索了包括该站点在内的Web之后,我发现自己并不孤单,并且尝试了各种发布的解决方案,但是错误“ 453”无法解决。
这不是COMM dll,我相信通过C / C ++创建时是可能的。
无论如何,请提供帮助。请参考下面的以下简单测试案例:
创建为C / C ++ 6.00 Win32动态链接库的DLL:
#include <Windows.h>
// Note that I did try the line below rather than the def file, but to no avail...
// #pragma comment(linker, "/EXPORT:ibask32=_ibask32@0")
// Function definition
extern "C" int __declspec(dllexport) __stdcall ibask32()
{
MessageBox(NULL,"String","Sample Code", NULL);
return 0L;
}
def文件:
LIBRARY "Gpib-32"
EXPORTS
ibask32
现在使用VB应用程序:
以下是启动Form1 Form_Load的全部内容
Option Explicit
Private Sub Form_Load()
Call ibask
End Sub
以下是添加到项目中的BAS模块文件:
Option Explicit
Declare Function ibask32 Lib "Gpib-32.dll" Alias "ibask" () As Long
Sub ibask()
Call ibask32 ' Note: This is the point of failure
End Sub
预先感谢您能提供可行的解决方案,
汤姆
最佳答案
据我所知,您正在尽一切所能。通过在DLL上运行Dumpbin.exe / exports来验证您的假设。这显示了导出函数的实际名称,它必须与VB6声明中的Alias匹配。
我能想到的唯一其他故障模式是VB6加载了错误的DLL。如果要从VB6 IDE使用它,它必须存在于PATH上列出的目录中。通过从命令行运行“ where gpib-32.dll”进行验证。
关于c++ - VB6调用的DLL导出C/C++ 6.00函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3064944/