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

本文介绍了一种利用C#调用C++生成的DLL的方法,通过创建CLR类库并整合C++的头文件及DLL文件实现跨语言调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近组里的项目需要利用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.youkuaiyun.com/lgh1700/article/details/7713532</a>,这篇文章详细介绍了如何编写代码,这里只是根据自己的理解做一个笔记以便以后使用使查找,并且也希望能够给你带来一点点的帮助,仅供参考!

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值