C++/C# 混合编程 (Mix code C++/C#)

原创 2006年05月17日 16:53:00

最近开始学习 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 文件中定义这个函数,

void cpplib::Class1::ARPRun()

{

 ULONG   ulLen = 6;

 ULONG   pulMac[2];

 HRESULT hr;

 char szIP[16];

 PBYTE pbHexMac = (PBYTE) pulMac;

 

 struct in_addr ia;

 size_t i, j;

 char * szMac = new char[ulLen*4];

 

 memset (pulMac, 0xff, sizeof (pulMac));

 u_long uaddr = ntohl(inet_addr(cf9 cf8 192.168.0.1cf9 cf9 ));

 IPAddr addr = htonl(uaddr);

 SendARP(addr, 0, pulMac, &ulLen);

 

}

 

Projects -> cpplib 加入引用。

在 form 的代码中  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

 

 

相关文章推荐

VS2008C++C#混合编程

1. 建立一个C#控制台项目,主要用于调试。 2. 在解决方案中添加一个新的空项目(VC++的)。 3. 添加一个源文件到Source Files文件夹(xxx.c or xxx.cpp)。 4...

C#与C++的混合编程 之一 方法介绍

C#写界面比较方便,而C++则擅长写算法,所以将两者结合起来将会加快程序的开发速度,并保证程序的质量。但C#与C++的混合编程有很多细节问题需要注意,下面简要列举一些并指出相应的解决办法。     ...

c++ c#混合编程

c++代码: #include "stdafx.h" #include extern   "C" _declspec(dllexport)  void fun(); //输出函数声明 #if...

混合语言编程:启用CLR(公共语言运行时编译)让C#调用C++

让C#调用C++前言关于混合C#和C++的编程方式,本人之前写过一篇博客(参见混合语言编程:C#使用原生的Directx和OpenGL),在之前的博客中,介绍了在C#的Winform和WPF下使用原生...
  • taonull
  • taonull
  • 2016年09月21日 11:41
  • 1413

C#与C++/CLI混合编程

最近做项目用到了一个二维码识别的SDK,想在C#里做个界面去调用该库生成和解析二维码,原本之前做过在C#里调用DLL的研究,没想到这次的尝试会异常的艰难,听我慢慢说来。         先用go...

c++与c#混合编程

C#写界面比较方便,而C++则擅长写算法,所以将两者结合起来将会加快程序的开发速度,并保证程序的质量。但C#与C++的混合编程有很多细节问题需要注意,下面简要列举一些并指出相应的解决办法。   ...

C#与C++的混合编程 之二 使用非托管dll 导出标准函数

C#与C++的混合编程 之二  使用非托管dll 导出标准函数

基于Activex控件的C++、C#混合编程

最近做一个东西,需要用C#做界面,C++和OpenCV做算法部分。就大致了解了一下C#和C++混合编程的方法,刚开始选择使用动态链接库DLL来实现,比较麻烦,最终也没有成功实现。后来尝试使用Activ...

C/C++和C#混合编程

  • 2017年11月01日 21:31
  • 749KB
  • 下载

C++ C#混合编程

  • 2014年09月28日 22:16
  • 72KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++/C# 混合编程 (Mix code C++/C#)
举报原因:
原因补充:

(最多只允许输入30个字)