从 VB6 调用一个简单的 VC DLL

Posted

技术标签:

【中文标题】从 VB6 调用一个简单的 VC DLL【英文标题】:Calling a simple VC DLL from VB6 【发布时间】:2009-04-27 18:13:58 【问题描述】:

我有一个用 VC6 编写的具有一个功能的简单 DLL:

__declspec(dllexport) int myfunc(long a, unsigned char *b, unsigned char *c, unsigned char *d, unsigned char *e)

我从 vb6 调用它:

Declare Function myfunc Lib "mylib.dll" (ByVal a As Long, ByVal b As String, ByVal c As String, ByVal d As String, ByVal e As String) As Long

....

dim a as long
dim b as string
dim c as string
dim d as string
dim e as string
dim r as long

r=myfunc(a,b,c,d,e)

我收到“错误的 dll 调用约定”错误,但我不知道为什么。有什么想法吗?

【问题讨论】:

【参考方案1】:

一般来说,'bad DLL...' 意思是它所说的。 VB6 对其调用的任何外部函数都需要 _stdcall 约定(如 Win API)。

尝试将__stdcall 添加到 C 函数原型中,看看会发生什么。

【讨论】:

【参考方案2】:

查看 Paul Caton 的 Universal DLL 函数调用程序:

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=70195&lngWId=1

它将允许您从 VB6 调用几乎任何类型的函数。

【讨论】:

以上是关于从 VB6 调用一个简单的 VC DLL的主要内容,如果未能解决你的问题,请参考以下文章

从 C 调用用 VB6 制作的 DLL

从 VB6 调用 C dll,其中 dll 是使用 Visual Studio 2013 编写的

找不到从 VB6 调用的 C++ DLL 程序

如何知道一个EXE使用什么开发语言开发的

VB6 使用 .Net dll。无法读取 app.config

如何从 VC++ 调用托管 DLL(带 GUI)?