Вызов простой VC DLL из VB6

У меня есть простая DLL, написанная с помощью VC6, с одной функцией:

__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», но не могу понять, почему. Есть идеи?


person Community    schedule 27.04.2009    source источник


Ответы (2)


Вообще говоря, «плохая DLL...» означает то, что написано. VB6 требует соглашения _stdcall (как Win API) для любых внешних функций, которые он вызывает.

Попробуйте добавить __stdcall в прототип функции C и посмотрите, что получится.

person Jim Mack    schedule 27.04.2009

Взгляните на вызывающую функцию Universal DLL от Paul Caton:

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

Это позволит вам вызывать практически любую функцию из VB6.

person Joe Jordan    schedule 17.09.2010