C#封装COM,C++调用

开题:已给C#编译的动态库,需要将模块集成到软件中。由于原有的软件版本较老(VC6.0开发),只提供了C#的DLL库,尝试许多方法失败,最后采取的方法是:将C#的DLL库使用C#封装成COM组件,以便C++来调用。

一、封装COM

1、创建工程

    在C#工程里,选择“类库”

C#封装COM,C++调用_第1张图片

创建完成后有几点注意:

C#封装COM,C++调用_第2张图片

    ID可以使用VS里面“工具->创建DUID”

C#封装COM,C++调用_第3张图片

COM互操作选上,以便生成***.tlb文件(在C++需要使用)

C#封装COM,C++调用_第4张图片

2.进行编译,生成DLL文件(COM)和tlb文件。

二、引用COM

1.在使用前需要注册编译好的COM,方法略

2.拷贝生成DLL文件(COM)和tlb文件到C++工程对应的路径下,设置好路径;在C++头文件加上下面两句

#import "*****.tlb"

using namespace  ******;

******代表C#里的命名空间名字。

3.调用C#函数

         HRESULT hr=FALSE;
CoInitialize(NULL);  //注意初始化  
CComPtr pPtr=NULL;

hr=pPtr.CoCreateInstance(__uuidof(MYServer))

        然后使用pPtr指针调用MYServer(C#里定义的)类里面的函数

-----------------------------------------------未完------------------------------------------------------------------------

你可能感兴趣的:(Windows)