如何在C中调用COM组件

时间:2010-12-17 03:37:20

标签: c com

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

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

2 个答案:

答案 0 :(得分:1)

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

  1. 如果您想调用从.NET创建的COM,那么您应该以正确的方式准备这些类(GUID,ComVisible等)。
  2. 为C生成适当的标头(OleView.exe可以做到这一点)
  3. 在C中使用那些存根文件来调用ctor,属性,方法等。
  4. 这是您的问题的完整,循序渐进的解决方案: http://www.codeproject.com/Articles/632616/How-to-use-NET-Csharp-COM-objects-in-plain-C

答案 1 :(得分:0)

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

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