в VB6, как я могу получить параметр char * из C DLL? - PullRequest
2 голосов
/ 12 ноября 2011

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

void WINAPI geterrstr(char* foo);

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

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

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

Есть идеи?

1 Ответ

5 голосов
/ 12 ноября 2011

Вы должны быть в состоянии;

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 должен быть соответствующий размер буфера, слишком короткий, и это приведет к сбою.

...