实现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”返回类型+函数名字(),这样可以
解决兼容性差的问题