dll - 如何在 D 中导入 COM dll

标签 dll com import d

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

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

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

在旁注中,我怎样才能自动获得 dll 的正确接口(interface)(在带有样板的 .di 中)?我问所以链接的正确性不取决于我(可能是不正确的)函数的翻译。他们确实有 webpage它提供了所有功能,但至少可以说对象模型有点困惑。

最佳答案

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

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

不幸的是,我实际上从未在 D 中使用过 COM,所以我无法提供任何进一步的建议。我希望这在某种程度上有所帮助。

关于dll - 如何在 D 中导入 COM dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8197501/

相关文章:

.net - 我可以使用 *.tlb 文件而不使用 Regasm 在计算机上注册它吗

c++ - 在 C 中使用 CoGetClassObject() - 访问 COM 对象接口(interface)

android - 在 Android Studio 中使用没有 gradle 文件的库

python tensorflow 导入 dll 加载失败

visual-studio - 在 F# 中调用另一个 dll 的类型提供程序

c# - 使用窗口句柄获取 IUnkown

android - gradle 文件和我的项目中的导入错误

Python 3.5+ : How to dynamically import a module given the full file path (in the presence of implicit sibling imports)?

c# - 在 Visual Studio C++ 中使用 DLL

visual-studio - 当/u arg 不起作用时,如何取消注册最初使用 RegSvr32 添加的 COM dll?