В vb6, как мне получить параметр char * из C dll?

54
3

Я вызываю C dll из своего приложения VB6. Dll имеет подпись вызова функции следующим образом.


void WINAPI geterrstr(char* foo);

где foo - это строка, которая должна быть возвращена.


В моем приложении VB6 я попытался вызвать свою DLL, используя следующий синтаксис, но возвращает пустую строку.


Declare Sub geterrstr Lib "technopnp.dll" (ByRef lpbuffer As String)

Любые идеи?

спросил(а) 2011-11-12T21:14:00+04:00 8 лет назад
1
Решение
78

Вы должны уметь:


Declare Sub geterrstr Lib "technopnp.dll" (ByVal lpbuffer As String)
...
dim buff as string
buff=string$(n, vbnullchar)
geterrstr buff

//read upto 1st vbnullchar
buff = left$(buff, instr(1, buff, vbnullchar) - 1)
if (buff="") then
//no data
else
msgbox buff
end if

n должен быть соответствующим размером буфера, слишком коротким и сбой.

ответил(а) 2011-11-12T21:31:00+04:00 8 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема