从 DLL 创建 IDL 文件
我正在开发一个 VB6 图形界面,该界面使用从 C 代码生成的 DLL,该 C 代码使用 __declspec(thread)
变量。问题是,由于已知限制,无法动态链接此 dll VB6 项目。
因此,正如此讨论中所建议的,一个可能的解决方案是创建从 DLL 生成 IDL 文件,使用 MIDL 编译器对其进行编译,然后在 VB6 项目中引用生成的 .tlb 文件。
我能够生成 .tlb 文件,直到我必须指定包含结构变量的函数
[
uuid(YOURTYPE-LIBG-UIDH-ERE0-000000000000),
version(1.0),
helpstring ("My Type Library 1.0")
]
library MyTypeLib
{
importlib("stdole2.tlb");
[dllname("OLEAUT32")]
module OleAut32
{
[entry("myFunct")]
int myFunct([in] myStruct data);
};
};
在行:int myFunct([in] myStruct data);
编译器说:
语法错误:期待“myStruct”附近的类型规范
有没有办法让它工作?就像 IDL 文件中的某种结构声明一样?
谢谢,
GB
在此处由 wqw 解决。谢谢
I'm working on a VB6 graphical interface that make use of a DLL generated from a C code that makes use of __declspec(thread)
variables. The problem is that because of a known limitation, it is not possible to dynamically link this dll in the VB6 project.
So, as suggested in this discussion, a possible solution is to create an IDL file from the DLL, compile it with a MIDL compiler, and then reference the resulting .tlb file in the VB6 project.
I'm able to generate the .tlb file until I have to specify functions that contain struct variables
[
uuid(YOURTYPE-LIBG-UIDH-ERE0-000000000000),
version(1.0),
helpstring ("My Type Library 1.0")
]
library MyTypeLib
{
importlib("stdole2.tlb");
[dllname("OLEAUT32")]
module OleAut32
{
[entry("myFunct")]
int myFunct([in] myStruct data);
};
};
At the row: int myFunct([in] myStruct data);
the compiler says:
syntax error: expecting a type specification near "myStruct"
Is there a way to make it works? Like some kind of struct declaration in the IDL file?
Thank you,
G.B.
SOLVED here by wqw. Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论