如何在C中调用COM组件

我必须从Visual Studio中的C语言调用COM组件。 我可以通过指定.tlb文件使用’#import’指令从Visual C ++中调用它。 但我没有在C语言中看到#import指令。 我可以使用替代方案吗?

我不能用C ++编写,因为我必须只用纯C创建模块。

该组件中的类型库可能来自MIDL编译IDL文件。 MIDL生成三个文件 – .tlb,.c和.h。 .c和.h文件包含C C ++的接口定义 – 有大量的#ifdef __cplusplus来提供相同的定义 – 一组用于C,另一组用于C ++。

你必须得到那些.c和.h文件并包含在你的项目中。 如果您有COM组件源 – 在构建组件后获取这些文件。 如果它是由第三方发货 – 联系他们并要求他们发布这些文件。

好的,你应该(简而言之):

  1. 如果你想调用从.NET创建的COM,那么你应该以正确的方式准备这些类(GUID,ComVisible等)
  2. 为C生成适当的标头(OleView.exe可以做到这一点)
  3. 在C中使用那些存根文件来调用ctor,属性,方法等。

这是您的问题的完整,一步一步的解决方案: http : //www.codeproject.com/Articles/632616/How-to-use-NET-Csharp-COM-objects-in-plain-C