2

VB6 アプリケーションから C dll を呼び出しています。dll には、次のような関数呼び出しシグネチャがあります。

void WINAPI geterrstr(char* foo);

ここで、foo は返す必要がある文字列です。

VB6 アプリケーションで、次の構文を使用して dll を呼び出そうとしましたが、空の文字列が返されます。

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

何か案は?

4

1 に答える 1

5

できるはずです。

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-12T18:31:51.623 に答える