【发布时间】:2011-07-11 01:16:31
【问题描述】:
我正在开发一个用 VB6 编写的图形界面,我必须在其中调用某个用 C 编写的 DLL 中包含的函数。由于known limitation,我必须实现一个trick,它允许我加载它DLL 以隐式方式。
这可以创建一个 IDL 文件,使用 MIDL 编译它并在 VB6 项目中引用生成的 .tlb 文件。
问题是 VB6 字符串和 char 的 C 数组不匹配,所以我无法将它们传递(并返回)给 DLL。
C函数的原型是:
int __stdcall myFunc(char filename_in[], char filename_out[], char ErrMsg[]);
我应该在 IDL 文件中写什么以及我应该如何从 VB6 中调用它?
谢谢。
【问题讨论】:
-
它看起来更像是一个字符数组而不是一个字符串。
-
@GolezTrol 是的,你是对的,称它们为字符串是错误的,我这样做是因为在 VB6 中我只知道字符串而不是字符数组。
-
-
@Beppe 如你所知,我一直在关注这个帖子。请解释为什么你不能只使用
Declare Function?据我所知,除了解决 TLS 问题的 tlb 技巧之外,您还可以执行此操作。 -
@David 你的意思是我可以将
Declare Function与 tlb 技巧结合使用吗?我还没试过。我认为以这种方式声明函数会带来问题。我应该检查一下。谢谢