在 vb6 中,如何从 C dll 中检索 char* 参数?

发布于 2024-12-15 01:20:11 字数 295 浏览 2 评论 0原文

我正在从 VB6 应用程序调用 C dll。该 dll 具有如下函数调用签名。

void WINAPI geterrstr(char* foo);

其中 foo 是必须返回的字符串。

在我的 VB6 应用程序中,我尝试使用以下语法调用我的 dll,但它返回一个空字符串。

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

有什么想法吗?

I am calling a C dll from my VB6 application. The dll has a function call signature as follows.

void WINAPI geterrstr(char* foo);

where foo is a string that has to be returned.

In my VB6 application, I have tried calling my dll by using the following syntax, but it returns an empty string.

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

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

毁虫ゝ 2024-12-22 01:20:11

你应该能够;

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 需要是适当的缓冲区大小,太短会崩溃。

You should be able to;

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 needs to be an appropriate buffer size, too short and it will crash.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文