C#封装成DLL,并在C#中调用
一、C#封装成DLL
1、在VS中创建项目选择类库,命名TestDLL
2、建立好项目后自动生成的代码如下
3、注意点:在Class1类中自定义的函数符必须为public,添加自己要封装的C#代码,可定义多个,Demo如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestDLL
{
public class Class1
{
//封装加的DLL函数
public int add(int x, int y)
{
return x + y;
}
//封装减的DLL函数
public int subtract(int x, int y)
{
return x - y;
}
}
}
4、点击项目生成解决方案,然后在项目目录的bin/debug下即可发现封装好的dll文件
5、注意:封装成DLL时程序集名字要跟封装程序里的 namespace 命名一致,如下图,否则应用DLL时无法引用成功。
二、C#中调用该DLL
1、新建窗体项目,把DLL放在项目文件夹的bin目录的Debug目录下,在引用里添加这个封装好的类库,且使用using包含进去
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using TestDLL;//引用封装的DLL
namespace TestDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
TestDllClass test = new TestDllClass();//新建类,实例化
private void btn_Add_Click(object sender, EventArgs e)
{
int A = test.add(1,2);//调用DLL的函数
}
private void btn_subtract_Click(object sender, EventArgs e)
{
int B = test.subtract(6,2);//调用DLL的函数
}
}
}
说明:C#封装的DLL是非标准的DLL(托管类),不可以用 DllImport 调用,DllImport是用来调用标准类(非托管类)的,这类DLL一般是用C++写的
C++封装的dll,在C#中的调用
1、说明:C#封装的DLL是非标准的DLL(托管类),不可以用 DllImport 调用,DllImport是用来调用标准类(非托管类)的,这类DLL一般是用C++写的
```csharp
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TestDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//引用下面两个,然后直接使用Add函数
[DllImport("Dll1.dll")]
public static extern int Add(int a, int b);
private void btn_Test_Click(object sender, EventArgs e)
{
int A = Add(1,2);//调用C++封装的DLL中的函数
}
}
}
``
2、注意:一定要注意生成dll 使用debug x64,在C#程序调用时也要使用 debug x64编译器,否则程序会报错。