动态调用链接库(dll) 续
20141118
最近一周做了一个关于仓库管理,拣货任务分配的模块,其中涉及到刷卡自动打印领取任务的功能点。
技术点:
C#调用C++、delphi的动态链接库。动态链接库的调用方法不同。效果也不相同。
DLL位置:执行程序根目录下面
例:
第一种:
[DllImport("shuipiao1.dll", EntryPoint = "checkticket", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
第二种:
[DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)]
第三种:
[DllImport("MifsDLL.dll", CharSet = CharSet.Ansi, EntryPoint = "mifs_anticoll", CallingConvention = CallingConvention.Cdecl)]
实际案例:
#region 调用dll接口方法
// 打开串口 OpenComm(char *commPort,DWORD baud) [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)] // [DllImport("MifsDLL.dll", EntryPoint = "OpenComm", SetLastError = true,
//CharSet = CharSet.Auto, ExactSpelling = false,
//CallingConvention = CallingConvention.StdCall)] //打开串口
public static extern Int16 OpenComm(string port, long baud); //装载密钥 WINAPI mifs_load_key(uchar _Mode, uchar _SecNr, uchar *Key)
[DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)]
//打开串口
public static extern Int16 mifs_load_key(uint Mode, uint SecNr, byte[] Key); [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)]
//mifs_request_2 寻卡
public static extern Int16 mifs_request_2(long mode); [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi, EntryPoint = "mifs_anticoll", CallingConvention = CallingConvention.Cdecl)]
public static extern Int16 mifs_anticoll(uint Bcnt, byte[] port); //mifs_select(uchar *_Snr) [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi, EntryPoint = "mifs_select", CallingConvention = CallingConvention.Cdecl)]
//选卡
public static extern Int16 mifs_select(byte[] port); //mifs_authentication(uchar auth_mode,uchar *snr,uchar key_sector)
[DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)]
//认证秘钥
public static extern Int16 mifs_authentication(uint mode, byte[] Snr, uint Key); //读卡数据 mifs_read(uchar _Adr, uchar *_Data) 出口函数16byte [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi, EntryPoint = "mifs_read", CallingConvention = CallingConvention.Cdecl)]
public static extern Int16 mifs_read(uint Adr, byte[] Data); //int WINAPI mifs_write(uchar _Adr, uchar *_Data) 写员工号
[DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)]
public static extern Int16 mifs_write(uint Adr, byte[] Data); // 蜂鸣 mifs_Buzzer(uchar bb)
[DllImport("MifsDLL.dll", EntryPoint = "mifs_Buzzer", SetLastError = true,
CharSet = CharSet.Auto, ExactSpelling = false,
CallingConvention = CallingConvention.StdCall)]
public static extern void mifs_Buzzer(int bb);
#endregion
动态调用链接库(dll) 续的更多相关文章
- C#程序实现动态调用DLL的研究(转)
摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...
- C#程序实现动态调用DLL的研究[转]
摘 要: 在< csdn 开发高手> 2004 年第 03 期中的<化功大法——将 DLL 嵌入 EXE >一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在 ...
- C#程序实现动态调用DLL的研究
摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...
- DLL、lib等链接库文件的使用
由于遇见过多次动态链接库的使用,自己也写过DLL,每次都要费好大劲去配置,现在就简单的总结一下,争取以后少走弯路! 一般都会有三个文件: .h 头文件 .lib 静态链接库 .dll 动态链接库 ...
- vs2010下C++调用lib或dll文件
注: DLL:表示链接库,包含dll,lib文件: dll: 表示my.dll文件 lib: 表示my.lib文件 C++ 调用.lib的方法: 一: 隐式的加载时链接,有三种方法 1 设置工程的 ...
- 如何动态调用 C 函数
JSPatch 支持了动态调用 C 函数,无需在编译前桥接每个要调用的 C 函数,只需要在 JS 里调用前声明下这个函数,就可以直接调用: require('JPEngine').addExtensi ...
- 在C#环境中动态调用IronPython脚本(一)
本文讲述用C#调用Ironpython运行环境,解析并运行动态pyhton脚本.这种情况应用在那些需要滞后规定行为的场合,例如,动态计算项(计算引擎),用户可以自定义计算内容.计算公式等. 本文的代码 ...
- 在VS2015中用C++编写可被其它语言调用的动态库DLL
转自:http://blog.csdn.net/songyi160/article/details/50754705 VS2015用C++创建动态库DLL步骤如下: (1)启动VS2015>文件 ...
- C++与C#有关对库(动态库dll,静态库.lib)文件的调用
1 动态库的相互调用 1.1 C#调用C++ dll步骤(只能导出方法): 1. c++建立空项目->源文件文件夹中添加cpp文件和函数 2. c++属性设置中,配置类型设置为动态库dll,公共 ...
随机推荐
- C++之类的比較运算符的重载
比較运算符的重载通常有两种方式: 第一:作为成员函数重载 曾经几章的Student类为例: <span style="font-family:Microsoft YaHei;font- ...
- 条款九: 避免隐藏标准形式的new
因为内部范围声明的名称会隐藏掉外部范围的相同的名称,所以对于分别在类的内部和全局声明的两个相同名字的函数f来说,类的成员函数会隐藏掉全局函数 class x { public: void f(); / ...
- 【CV论文阅读】+【搬运工】LocNet: Improving Localization Accuracy for Object Detection + A Theoretical analysis of feature pooling in Visual Recognition
论文的关注点在于如何提高bounding box的定位,使用的是概率的预测形式,模型的基础是region proposal.论文提出一个locNet的深度网络,不在依赖于回归方程.论文中提到locne ...
- powershell 的版本号所引起的载入 FSharp 编译器问题
powershell 的版本号所引起的载入 FSharp 编译器问题 在 64 位的系统下,大部分系统文件都有 64 位和 32 位的版本号:通常在C:\WINDOWS\system32 下的是 64 ...
- EXISTS 执行顺序 CLR-2-2-引用类型和值类型
EXISTS 执行顺序 select * from a where a.s_status=1 and exists (select orderid from b on a.orderid=b.or ...
- NHibernate之旅(8):巧用组件之依赖对象
本节内容 引入 方案1:直接加入 方案2:巧用组件 实例分析 结语 引入 通过前面7篇的学习,有点乏味了~~~这篇来学习一个技巧.大家一起想想假设我要在Customer类中实现一个Fullname属性 ...
- jquery跨域请求json数据
//服务端生成json数据json.php <?php $json=array("Volvo","BMW","SAAB"); $cb ...
- Google's Hybrid Approach to Research
文档地址:戳我 总结: (i) aims to generate scientific and engineering advances in fields of import to Google, ...
- mongodb配置主从模式
Mongodb的replication主要有两种:主从和副本集(replica set).主从的原理和mysql类似,主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己 ...
- HttpClient-03Http状态管理
最初,Http被设计成一个无状态的,面向请求/响应的协议,所以它不能在逻辑相关的http请求/响应中保持状态会话.由于越来越多的系统使用http协议,其中包括http从来没有想支持的系统,比如电子商务 ...