【技巧篇】C#调用外部dll文件

【技巧篇】C#调用外部dll文件

参考自:https://www.cnblogs.com/lhyqzx/p/5970406.html

一、.dll文件介绍

dll文件(Dynamic Link Library)又称动态链接库,不能直接被执行,也不能接收消息,包含能被程序或者其他dll文件调用的函数(方法),须由进程载入才可发挥作用。

优点:

使用较少的资源,减少磁盘和物理内存中加载的代码的重复量

推进模块式体系结构,有助于模块式程序的开发

简化部署和安装,部署和安装dll不要求重新建立与该dll链接的程序

二、dll的调用

托管:基于.net平台开发的

非托管:主要是基于win32平台开发的dll,activeX的组件

调用的基本形式:

[DLLImport("DLL文件")]

修饰符 extern 返回变量类型 方法名称 (参数列表);

注意:

需要在声明中使用System.Runtime.InteropServices命名空间

DLLImport只能放在方法声明上

dll文件必须位于程序当前目录或者系统定义的查询路径中

三、.实例

1.C#动态加载dll中的非托管函数

(1)新建C#窗体工程(Add_func):

在Form中加入一个button和一个text控件,命名button为calButton,text命名为resultNum。

在Form.cs文件中,使用System.Runtime.InteropServices命名空间。

(2)新建C++ Win32项目工程(Count)

在里面新建一个Count.cpp源文件,插入如下代码:

extern "C" _declspec(dllexport)int _stdcall count(int a, int b);

//计算函数

int _stdcall count(int a, int b)

{

int _a = a;

int _b = b;

return _a + _b;

}

F7编译生成dll文件,将Debug目录下的Count.dll文件拷贝到Add_func/bin/Debug下面。

(3)为calButton添加一个click事件,并加入如下代码:

[DllImport("Count.dll")]

static extern int count(int a, int b);

//求和按钮

private void calButton_Click(object sender, EventArgs e)

{

int a = 6, b = 4;

int result = count(a, b);

resultNum.Text = result.ToString();

}

编译运行,即可。

相关推荐

什么去来什么成语大全四个字(什么去什么来的成语)(40个)
365bet在线体育投注网

什么去来什么成语大全四个字(什么去什么来的成语)(40个)

📅 07-18 👁️ 4539
空气炸锅薯条(不冷冻,不水煮,不过夜,全网最简单)
365平台app下载手机版

空气炸锅薯条(不冷冻,不水煮,不过夜,全网最简单)

📅 09-26 👁️ 3770
如何将瓦特小时转换为瓦特
365平台app下载手机版

如何将瓦特小时转换为瓦特

📅 09-28 👁️ 2393
史上最深度最全面的格力手机2代评测出炉!
365bet开户网址

史上最深度最全面的格力手机2代评测出炉!

📅 06-30 👁️ 6816
诈尸的解释
365bet在线体育投注网

诈尸的解释

📅 09-29 👁️ 9114
最贵最甜是什么梨品种
365bet在线体育投注网

最贵最甜是什么梨品种

📅 07-24 👁️ 9848
没有注册类,怎么解决啊
365平台app下载手机版

没有注册类,怎么解决啊

📅 09-30 👁️ 5084
MATLAB基础(二)向量与矩阵
365bet开户网址

MATLAB基础(二)向量与矩阵

📅 09-25 👁️ 5079
小米(Mi) 4小米(Mi) 4 数据备份与还原,常用的方法介绍刷机解锁