开题:已给C#编译的动态库,需要将模块集成到软件中。由于原有的软件版本较老(VC6.0开发),只提供了C#的DLL库,尝试许多方法失败,最后采取的方法是:将C#的DLL库使用C#封装成COM组件,以便C++来调用。
一、封装COM
1、创建工程
在C#工程里,选择“类库”
创建完成后有几点注意:
ID可以使用VS里面“工具->创建DUID”
COM互操作选上,以便生成***.tlb文件(在C++需要使用)
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<TWXinDai_Interface> pPtr=NULL;
hr=pPtr.CoCreateInstance(__uuidof(MYServer))
然后使用pPtr指针调用MYServer(C#里定义的)类里面的函数
-----------------------------------------------未完------------------------------------------------------------------------