我有一个用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调用约定”错误,但我无法弄清楚原因。有什么想法吗?
答案 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调用几乎任何类型的函数。