没有合适的资源?快使用搜索试试~ 我知道了~
首页C#与C++混合编程.pdf
C#与C++混合编程.pdf

本文介绍了C#与C++混合编程的一个例子: 面对C#代码中使用C++类的问题,本文总结了一种方法能够导出C++本地代码的类给C#调用,为给遇到相似问题的同道们提供一个参考吧。
资源详情
资源评论
资源推荐

由于 C#编写的是一种托管代码,编译生成微软中间语言,而 C++代码则编译生成本地
机器码,这两种语言进行混合编程就存在一定困难。一般比较常用的方法是使用 DllImport
的方法,这种方法在网上有很多介绍,这里就不详细叙述了。但是用过这种方法的人都知道
这种方法对于导出函数还可以但是却没法导出 C++类!非常的要命。
最近我在做一个项目的时候就遇到了需要在 C#代码中使用 C++类的问题,在对收集的
资料学习中还真找到了一种方法能够导出 C++本地代码的类给 C#调用。现在就做个学习总
结,也是为了给遇到相似问题的同道们提供一个参考吧。
以上都说过 C++直接生成本地机器码,C#是生成微软中间语言的托管代码,想要直接调
用是不可能的。事实上,C 系列中还存在一种语言叫做托管 C++,这种语言语法上和 C++几
乎一样,但是却和 C#一样编译成为微软中间语言,这样就可以和 C#良好地通信,即可以在
c#中使用托管 C++类。另外,托管 C++还有及其重要的两个特性就是:可以调用本地 C++的
类和函数!一个托管 C++的程序集可以嵌套本地 C++编译的机器码!好强大的混合体。所以
我们的技术路径也就明晰了:C#以托管 C++为中介调用本地 C++的类和函数。换句话说也就
是用托管 C++给本地 C++代码做一个外壳供 C#调用。
我们的例子是将一个将一个函数签名为int Add(int a,int b)的C函数和一个C++本地类
class CClassNative导出,最终在C#中使用。
CClassNative类的定义如下:
class CClassNative
{
public:
CClassNative(void);
~CClassNative(void);
int menber;//成员
int menderFuncSub(int a,int b);//成员函数
};
为实现这个目的我们建立一个工程来演示。
一.准备用于导出的类和函数。
首先,建立一个 Win32 的 C++工程,项目为“Win32Application(C、C++)”,解决方案为“C、
C++、CSharp 混合编程演示”。
再添加 Functions.h 文件和 Functions.cpp 文件,在 Functions.h 中定义方法 int Add(int a,int











安全验证
文档复制为VIP权益,开通VIP直接复制

评论1