返回顶部

【技巧篇】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();
}

编译运行,即可。

posted @ 2020-06-21 23:31  藤原豆腐店の張さん  阅读(1572)  评论(0编辑  收藏  举报