动态链接库dll文件的使用

本文详细介绍了C#和Java如何使用C语言编写的DLL文件,包括必要的库引用、方法调用及处理指针问题的技巧。通过实例展示了如何封装C语言DLL方法为类使用,并强调了面向对象语言在处理C语言库时的封装需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dll文件一般是在windows平台使用,由c/c++编译后的二进制代码,使用反向编译可能能得到原代码,通过viewdll.exe(一个公司的软件,肯定有其他软件),利用这些工具可以查看其中的函数。c#开发的dll文件可以通过微软reflector查看其中的源代码(一般可以)。

下面简单的总结c#和java怎么使用c语言编写的dll文件,一般c语言编写dll文件时为了多平台的使用。


c#使用的例子,System.Runtime.InteropServices,System.Runtime.CompilerServices是重要的两个类。 [MethodImpl(MethodImplOptions.ForwardRef), DllImport("rfid.dll", CallingConvention = CallingConvention.Cdecl)] //dll文件放入项目bin中,或者调用绝对路径

       protected static extern unsafe int RFID_Open(uint* pHandle, uint flags); //调用的方法名


java调用dll的方法较多,但是都是通过jar包调用dll文件,例如JNI, Jawin, Jacob,Jnative。下面以Jnative为例,

System.loadLibrary("rfid");                      //装载dll文件,注意路径
JNative jnative = new JNative("rfid","RFID_RadioOpen");  //使用rfid_radioOpen方法
jnative.setRetVal(Type.INT);             //设置返回值类型
jnative.setParameter(0,pointer);     //设置参数

jnative.setParameter(1,0);
jnative.invoke();                                 //调用方法


一般c语言编写的dll文件方法,参数及返回类型中存在指针类型,因此c#和java使用dll方法时,要处理指针的问题,例如c#中地址作为参数可用ref参数。java语言的设计初衷只是避免地址和指针的使用,因此使用dll文件中的方法较为复杂。

c#和java语言是面向对象语言,因此在使用c语言的dll库时,一般要经过封装成类后使用。


这是本人第一篇学习经验的总结,以后会多多努力,成为一个习惯并且不断的提高自己专业知识。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值