在VB6中使用C++ DLL

Fel*_*bek 3 c++ vb6 dll dllexport

我刚刚在MSVC++ 2010中为我的老板创建了一个DLL.我选择"新Win32 DLL"选项"导出符号",所以,一切都是完全标准的.新项目文件中有一些预定义的导出,一个类,它的构造函数,一个带有伪值的全局函数和变量,以及一个带有APIENTRY函数的文件dllmain.cpp.我什么都没改变.

现在我的老板想在他的VB6项目中使用导出的东西.他开始了一个VB6项目,做了菜单"Project" - "Links"(从德语翻译成英语,所以它可能有所不同,但我确定你知道我的意思)并选择了一个DLL文件,正如他所说的那样通常会.

但是,VB6无法包含它,而是显示错误消息"无法包含DLL文件"(没有给出真正的理由).Visual C++ 6中标准的新DLL项目也是如此.我的老板认为这可能是因为符号没有真正导出或者VB6需要一些特殊的声明.有谁知道问题是什么?

Mus*_*sis 6

是的,VB6不能那样工作.您需要在VB代码中声明DLL函数,如下所示:

Private Declare Function WinHelp Lib "user32" Alias "WinHelpA" _
  (ByVal hwnd As Long, ByVal lpHelpFile As String, _
  ByVal wCommand As Long, ByVal dwData As Long) As Long
Run Code Online (Sandbox Code Playgroud)

您可以将"user32"替换为"MyCPlusPlusDLL.dll",并使用DLL中的实际方法名称和签名等.然后把DLL放在你的/ System文件夹中,你应该好好去.

注意:这是假设C++ DLL中的方法是用"__declspec"声明的.

  • +1我也强烈建议阅读微软的手册[开发用于VB的DLL](http://vb.mvps.org/tips/vb5dll.asp).该文档是为VC++ 4.2编写的,并且从未更新过,但对于使用VB6的VC++ 10来说它仍然非常有用.当然没有什么改变从VB5到VB6 (4认同)