如何在D中导入COM dll

时间:2011-11-19 21:29:49

标签: dll com import d

我正在尝试创建一个使用(第三方)COM .dll的D应用程序,这样我就可以抓取另一个应用程序的文本框,这样当某个字符串出现时我就会发出错误。

但是,第三方不提供与dll一起使用的.lib,.def或.h文件(至少具有免费试用版)。我可以使用implib工具创建.lib文件,但我没有在创建的.lib中看到任何库的函数。

他们的(visual c ++)示例使用#import指令链接它,但这对我没用...

另外请注意如何自动获取dll的正确接口(带有连接的样板的.di)?我问这样联系的正确性并不依赖于我(可能是不正确的)函数的翻译。它们有一个webpage,它提供了所有功能,但对象模型至少可以说有点混乱。

2 个答案:

答案 0 :(得分:1)

据我所知,COM库只公开一些函数,需要(un)注册库和创建对象。 但是,您可以使用OLE/COM Object Viewer查看COM .dll中的接口和函数。似乎它可能能够输出头文件(.h)。之后,也许您可​​以使用htod作为将所有内容转换为D接口的起点。

DMD发行版似乎包含一个.COM示例( chello.d,dclient.d,dserver.d ),乍一看它似乎不需要明确要求任何LIB

不幸的是,我从来没有在D中实际使用COM,所以我不能再提供任何建议。我希望这会有所帮助。

答案 1 :(得分:1)

虽然我自己还没有真正完成COM工作,但我正试图在Juno上重振Github/he-the-great。该项目的一部分是tlbimpd,它将从DLL输出D文件。

我测试了这些示例并成功运行了tlbimpd。请尝试一下供您使用并提交任何问题。