从VB6调用一个简单的VC DLL

时间:2009-04-27 18:13:58

标签: vb6 dllimport

我有一个用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调用约定”错误,但我无法弄清楚原因。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

查看Paul Caton的通用DLL函数调用者:

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

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