我正在尝试测试一个提供VC ++示例的库;但是,我在所有项目中使用gcc / g ++。
嗯,VC ++示例访问库的方式是使用 #import 指令,传递库DLL的位置,然后使用使用命名空间 LIBRARYNAME < / i> ,然后它可以创建一些未定义的类型(我假设它在DLL中定义)并使用__uuidof创建它的新实例。从那以后,为了调用其中一个库函数,这个例子只是做了一个 createdObj-&gt; foo()就是那个。
嗯...... g ++的#import与VC ++的导入不同(见here),所以这个例子对我不起作用。
有没有办法可以转换为在g ++下编译,或者我是SOL,直到库开发人员为我提供了一个我可以试用的静态库?
答案 0 :(得分:2)
如果您使用的是cygwin,那么此页面:http://www.cygwin.com/cygwin-ug-net/dll.html将为您提供所需的所有帮助。
如果你正在使用mingw,你可以完成同样的事情,但你可能不会有grep和sed,所以你必须使用其他一些方法来进行过滤来获取.def文件。
答案 1 :(得分:2)
如果在VC ++中使用#import
,则表示DLL不是常规DLL,而是COM DLL。
由于gcc没有COM支持,你只需要等待库作者编写非COM版本。
答案 2 :(得分:2)
也许它可以帮助您使用OLEViewer和“查看类型信息”来提取IDL的基础知识。或者也许你可以使用VC ++生成的.tlh和.tli文件并将它们导入到你的G ++项目中。
我想这个答案太迟了,但是现在我自己遇到了类似的问题所以我刚刚进入这个主题。希望你按时找到解决方案。
问候。