所以我正在用纯 C 语言编写一个 Win32 程序,它使用 Direct2D 进行绘图。到目前为止,考虑到这是我对 COM 的第一次重大实验,一切都很好。我现在开始使用 DirectWrite 进行字体渲染,但似乎存在障碍。尽管 Direct2D 和大多数其他 COM 对象具有为 C 和 C++ 编写的单独接口,但 DirectWrite 仅在 Windows SDK 标头中具有 C++ 接口。我不知道这是一个疏忽还是有目的的决定,但如果给定适当的 C 友好标头,它似乎应该在 C 中正常工作。我想如果我为 DirectWrite 编写自己的标题,我应该没问题。
所以这让我想到了问题的实质:如何将 C++ 风格的代码用于 COM 接口并将其转换为 C 友好的代码?我自己从未创建过 COM 接口,所以我不知道如何为它编写自己的 DirectWrite 标头。我尝试并排查看 Direct2D 的 C 和 C++ 接口标头以进行比较,但我有点难以理解。谢谢各位!