文档库 最新最全的文档下载
当前位置:文档库 › c#调用c++函数

c#调用c++函数

c#调用c++函数
c#调用c++函数

实现dll文件以及c#调用c++写的函数或类的方法

注:本文以VS2013集成开发软件为例

1、编写c++类或者函数的dll文件

1.1创建dll文件

打开vs2013,选择win项目,输入名称,确定并且选择下一步,点击dll文件,老司机可以直接选择空项目,然后自己编写函数的入口,这样在生成dll文件时会少很多不必要的东西,而对于新手的话,建议在点击dll后,直接点击完成,这样程序会自行的帮你生成dll.

1.2、打开dllfile.cpp文件。

打开dll.cpp后,你就可以定义你的函数了,这里不需要写main函数,只需要定义函数,我定义了一个简单的求和函数,对于c++类的方法也是如此,最简单的方法就是定义一个函数来使用类。当然,程序的

设计,只要合理,你想怎么弄就怎么弄。

1.3、导入函数进入接口,这个需要在dllmain.cpp里完成。我导入的就是extern int fun()函数了。

1.4、创建dll导出定义文件,这个如下图

1.5接下来就是直接调试生成dll文件了。

2、接下来让我们创建一个c#的窗口程序,当然你也可以选择控制

台程序,然后调用dll文件里的函数。

2、1创建一个windows窗体程序,并选择以下控件

并改名为:

2.2、导入dll里的函数

2.2.1、将dll文件添加到窗口程序文件的debug文件夹里面

2.2.2在窗口程序里就可以导入函数了。

引用using System.Runtime.InteropServices;//它是不可少的,靠它导入dll文件具体实现代码如下:

1>--using System;

using System.Collections.Generic;

using https://www.wendangku.net/doc/075634072.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Runtime.InteropServices;//它是不可少的,靠它导入dll文件

namespace dll

{

publicpartialclass Form1 : Form

{

[DllImport("dllfile.dll")]publicstaticexternint fun(int a, int b);//导入函数public Form1()

{

InitializeComponent();

}

privatevoid label1_Click(object sender, EventArgs e)

{

}

privatevoid Form1_Load(object sender, EventArgs e)

{

textBox1.Text = string.Empty;

textBox2.Text = string.Empty;

label1.Text = "请输入a";

label2.Text = "请输入b";

button1.Text = "确定";

}

privatevoid button1_Click(object sender, EventArgs e)

{

int a = 0, b = 0, c = 0;

a = int.Parse(textBox1.Text);

b = int.Parse(textBox2.Text);

c = (int)fun(a, b);

MessageBox.Show(a.ToString()+"+"+b.ToString()+"="+c.ToString()); ; }

}

}

2.2.3、实现效果

3、总结

至于其他类型的编程语言要调用dll文件也是可以的,但会存在兼容性。至于C调用c++的话,可以将函数申明为extern “C”返回类型+函数名字(),这样可以

解决兼容性差的问题

相关文档