如何在D语言中导入COM dll

4
我正在尝试创建一个使用第三方COM .dll的D应用程序,以便在另一个应用程序的文本框中抓取文本,并在出现特定字符串时发出错误提示。然而,第三方没有提供与dll配套的.lib、.def或.h文件(至少在免费试用版中没有)。我可以使用implib工具创建.lib文件,但是在创建的.lib中看不到任何库函数。他们(visual c++)的示例使用#import指令来链接,但这对我没有用... 另外,我如何自动获取dll的正确接口(在带有链接代码的.di文件中),以使链接的正确性不依赖于我(可能不正确)翻译函数?他们有一个网页列出了所有的函数,但对象模型有些混乱。
2个回答

1
据我所知,COM库只公开了一些函数,用于(取消)注册库和创建对象。但是,您可以使用OLE/COM Object Viewer查看COM .dll中的接口和函数。似乎它可以输出头文件(.h)。然后,也许您可以使用htod将所有内容转换为D接口的起点。
DMD发行版似乎包括一个.COM示例(chello.d、dclient.d、dserver.d),乍一看似乎不需要任何LIB。
不幸的是,我从未在D中使用过COM,因此无法提供更多建议。希望这在某种程度上有所帮助。

1

虽然我自己还没有实际进行COM工作,但我正在尝试在Github/he-the-great上恢复Juno。 项目的一部分是tlbimpd,它将从DLL输出D文件。

我已经测试了示例并成功运行了tlbimpd。 请尝试您的用途并提交任何问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接