3

我正在尝试测试一个提供 VC++ 示例的库;但是,我对所有项目都使用 gcc/g++。

好吧,VC++ 示例访问库的方式是它使用#import指令,传递库 DLL 的位置,然后它执行using namespace LIBRARYNAME,然后它能够​​创建一些未定义的类型(我假设它已定义在 DLL 中)并使用 __uuidof 创建它的新实例。从那时起,要调用其中一个库函数,该示例只需执行createdObj->foo() 即可

嗯... g++ 的 #import 与 VC++ 的 import 不同(见这里),所以这个例子对我不起作用。

有什么办法可以将它转换为在 g++ 下编译,或者我是 SOL,直到库开发人员为我提供一个我可以试用的静态库?

4

3 回答 3

2

如果您#import在 VC++ 中使用,则意味着 DLL 不是常规 DLL,而是 COM DLL。

由于 gcc 不支持 COM,因此您只需要等待库作者编写非 COM 版本即可。

于 2009-07-31T14:39:27.213 回答
2

也许它可以帮助您使用 OLEViewer 和“查看类型信息”来提取 IDL 的基础知识。或者,也许您可​​以只使用 VC++ 生成的 .tlh 和 .tli 文件并将它们导入您的 G++ 项目。

我想这个答案为时已晚,但现在我自己也遇到了类似的问题,所以我才进入这个线程。希望您能及时找到解决方案。

问候。

于 2010-05-20T15:55:02.480 回答
2

如果您使用的是 cygwin,那么此页面:http ://www.cygwin.com/cygwin-ug-net/dll.html将为您提供所需的所有帮助。

如果你使用 mingw,你可以完成同样的事情,但你可能没有 grep 和 sed,所以你必须使用其他一些方法进行过滤来获取你的 .def 文件。

于 2009-06-26T19:44:01.153 回答