我一直试图创建一个可以被VB6访问的带有C / C ++的DLL,这是正确的我从VB6调用函数时得到错误“453在myDllName.dll中找不到DLL入口点myFunctionName”应用程序。 在搜索了网站(包括这个网站)之后,我发现我并不孤单,我已经尝试了各种解决方案,但错误“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 App:
以下是启动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
如果能提供可行的解决方案,请提前致谢 汤姆
答案 0 :(得分:1)
你正在尽我所能地做正确的事。通过在DLL上运行Dumpbin.exe / exports验证您的假设。这显示了导出函数的实际名称,它必须与VB6声明中的Alias匹配。
我能想到的唯一其他失败模式是VB6加载错误的DLL。如果要从VB6 IDE中使用它,它必须存在于PATH上列出的目录中。通过从命令行运行“where gpib-32.dll”来验证。