tlb 文件(使用 regasm)是由 dll(使用 c# 代码)制成的,我可以使用 #import 在 c++ 中使用它。一切正常。
有没有办法,我可以用C语言来使用它?我刚刚发现 #import 是 C++ 特定的。那么,有人可以告诉我如何在我的 C 程序中使用吗?
我的主要目的是在我的C程序中使用用C#开发的COM DLL。
谢谢&Rgds,
〜卡尔文
用 C 语言进行 COM 编程是very痛苦,但并非不可能。不过,责任就到此为止了。类型库的要点是让工具自动生成 COM 接口和联合类声明,以便您可以在代码中使用它们。与 .h 文件非常相似,但与语言无关。 .NET 的等价物是程序集中的元数据。
问题是,该工具无法将 .tlb 转换为 C 声明。我相信您熟悉 #import,这就是 MSVC 中使用的。但它会生成 C++ 代码、智能指针,帮助您创建 COM 对象、调用其接口方法并处理错误。如果有一个可用的工具可以生成 C,那么它就是一个隐藏得很好的秘密。
我想到一个技巧,可以使用 OleView.exe、File + View TypeLib 来查看类型库的内容。该视图被反编译为 IDL(接口定义语言)。您可以将此文本复制并粘贴到 .idl 文件中,然后使用 midl.exe 和 /header 命令行选项对其进行编译。这会生成一个 .h 文件,其中包含接口的 C++ 和 C 声明。应该让您接近,只需确保类型库相当稳定,这样您就不必经常这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)