Tag Archives: .Net

C# 调用动态链接库

C#调用动态链接库主要是通过DllImport来实现的。
1、在调用DLL的CS文件中引入
using System.Runtime.InteropServices;
2、将DLL拷贝至工程目录bin下的Debug或者Release文件夹内。
3、声明调用函数,以打开磁卡读写器为例:

/* 丛指定的端口打开磁卡读写机 */
[DllImport(“HCE300_API.dll”, EntryPoint = “HCE300_Open”, CharSet = CharSet.Auto, SetLastError = true)]
public static extern int init(int ComPort);
DllImport 指定要动态调用的DLL位置名称
EntryPoint 指定DLL内部函数名
CharSet 说明内部数据返回编码
SetLastError 确定在函数返回前是否调用Win32的SetLastError

下面是对应于Dll函数的自定义函数声明,一定要保证参数列表一致。
如果再DllImport中指定ExactSpelling=true,函数名要与EntryPoint保持一致,指定为false,可以自定义函数名。
4、外部函数就可以直接通过init函数调用Dll内部的封装函数了。
注意:
Dll函数的参数列表中如果有指针类型的参数,那么工程必须是非线程安全的。示例如下: