C++/C# 混合编程 (Mix code C++/C#)
最近开始学习 C# WinForm 编程,想通过把过去用 C++/MFC 写的工程移植到 C# 来学习 C# 的开发过程。C#来建造窗口界面比 MFC 轻松许多,但是有很多底层的代码要移植到 C# 实在很麻烦而且没有必要,这部分代码还使用了第三方开发库 WinPcap,于是决定这部分代码依然保持在 C++ 。
Visual C++.net 是混合模式的,我们可以创建基于 CLR 的托管代码,也可以创建 Native 的本机代码。
在 Solution 里新建一个 Visual C++ -> CLR -> Class Library 项目,点击完成 Visual Studio 为我们创建了一个名字空间和一个类。
namespace cpplib { public ref class Class1 { // TODO: Add your methods for this class here. public: Class1(); }; }
我们将计划保持为 C++ code 的那部分功能封装成一个类,这里我只介绍其中一个方法。构造函数也是我加入的,向导并没有为我们创建它。现在在构造函数后面加入一个新的 public 的方法
void ARPRun();
在托管 C++ 中必须为函数指定返回类型,因为托管 C++ 并无缺省返回 int 的规则。然后在 cpplib.cpp 文件中定义这个函数,
Projects -> cpplib 加入引用。 在 form 的代码中 <pre lang="csharp">using cpplib; private void toolStripButton1_Click(object sender, EventArgs e) { Class1 c1 = new Class1(); c1.ARPRun(); }
Build 通过, 运行没问题。Build Release 版,复制到其他安装 .net framework 2.0 的机器上运行 ok.
My Development Environment:
Windows XP Professional SP2/ Visual Studio 2005 Professional / .net framework 2.0


博主好,请问用MFC写的比较大的工程,如需要进行数据库编程的程序。能够这样移植吗?
主要是当时做MFC时,用到的数据库的类,在Class library里面找不到,不知道怎么处理。。
Reply