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库时,一般要经过封装成类后使用。
这是本人第一篇学习经验的总结,以后会多多努力,成为一个习惯并且不断的提高自己专业知识。