0

我有一个用 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 调用约定”错误,但我不知道为什么。有任何想法吗?

4

2 回答 2

3

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

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

于 2009-04-27T18:28:21.510 回答
0

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

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

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

于 2010-09-17T00:55:39.597 回答