Вызов простой VC DLL из VB6 - PullRequest
0 голосов
/ 27 апреля 2009

У меня есть простая 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)

Я получаю сообщение об ошибке "bad dll Call Convention", но не могу понять, почему. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 27 апреля 2009

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

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

0 голосов
/ 17 сентября 2010

Проверьте функцию вызова универсальной библиотеки DLL, Пол Катон:

http://www.planet -source-code.com / VB / скрипты / ShowCode.asp? TxtCodeId = 70195 & lngWId = 1

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

...