我一直在尝试用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/

10-11 22:37
查看更多