C#调用C++生成的类(通过CLR类库实现)

时间:2022-09-01 18:32:44

最近组里的项目需要利用C#调用C++生成的Dll,在网上反复查找资料最后终于实现了,这个过程,现将大致过程整理总结如下。

建立起C#与C++之间的桥梁便是VS中我们不常用的那个CLR类库,我这次用的是其他组编译好的C++DLL动态链接库,然后建立自己的CLR类库工程,将已给的C++头文件以及DLL跟相应的lib文件拷贝的工程目录下待用。项目建立完成以后,在头文件处添加包含文件即

#include"MyDll.h"
其中MyDll.h即为已经编译好的动态链接库的头文件,并将其添加到工程当中,自动生成的工作在头文件会有这样一行代码
namespace MyDLLTestCLR  {    } 

在我写代码的时候有这个命名空间后续会有很多问题,所以索性我就将这个命名空间删掉,直接就定义一个类。这个还有一个问题需要注意,就是给定的C++的头文件,定义类的时候不能要按如下方式定义,否则在编译连接的过程中CLR类库工程只能生成DLL文件而没有LIB文件,定义方式如下:

extern “C” _declspec(dllexport) class CMyDLl
{

}

然后在头文件中定义全局指针变量

CMyDll * myDll;

然后在构造函数中初始化全局变量
MyDLLTestCLR(){     myDll=new CMyDll();}

并且在析构函数中删除该变量,然后就可以任意调用该类中的任意函数了。最后将编译生成的DLL与LIB文件以及原始的C++生成的DLL与LIB文件一起拷贝到C#工程中就可以直接在C#中调用DLL中的任何一个函数了,这样便实现了C#调用C++类的过程,其中具体操作过程可参考连接http://blog.csdn.net/lgh1700/article/details/7713532</a>,这篇文章详细介绍了如何编写代码,这里只是根据自己的理解做一个笔记以便以后使用使查找,并且也希望能够给你带来一点点的帮助,仅供参考!

通过以上的一系列的操作便实现了C#调用C++的DLL,怎么样不是很难吧,赶紧试试吧!欢迎留言探讨!