JNative调用动态函数链接库

  去年的九月末和十月初,研究过如何用java对串口操作,链接一个RFID读卡器。

  对串口发送指令和接收数据,交互的过程是单工异步。先后尝试了四种方法,最后一种成功了!

  这四种方法先后是:socket,javax.comm,javax.rtx,jnative。

  读卡器的厂家带一个例子,VB的,内部使用他们封装的.dll动态函数链接库,开始一直没想用这个.dll文件,所有的指令都是自己看着协议写。

  导致了前面方法的失败,他们也一定能成功,每种方法都尝试了两天。只是最后一种最安全。

  最近,要使用硬件了,可能会涉及.dll。所以将jnative的方法回忆一下:

   先下载Jnative所要使用的包http://sourceforge.net/projects/jnative

   API    http://jnative.free.fr/docs/

    解压下载的JNative包获得三个文件,分别是:JNativeCpp.dlllibJNativeCpp.soJNative.jar JNativeCpp.dll是提供给WINDOWS

    的库组件需要复制到WINDOWS/SYSTEM32目录下

   libJNativeCpp.so是提供给linux下的组件,没怎么用- -

   JNative.jar这是一个扩展包,可以复制到c:/jdk/jre/lib/ext下自己的目录结构,会自动加载,或者直接引入到工程包中。

   结构映射(Structure Mapping

 

Type

Length

JNative class

DWORD

4

org.xvolks.jnative.misc.basicStructures.LONG

HWND

4

org.xvolks.jnative.misc.basicStructures.HWND

COLORREF

4

org.xvolks.jnative.misc.basicStructures.LONG

COLORREF*

4

org.xvolks.jnative.pointers.Pointer

LPARAM

4

org.xvolks.jnative.misc.basicStructures.LPARAM

LPCCHOOKPROC

4

org.xvolks.jnative.util.Callback

LPCTSTR

4

org.xvolks.jnative.pointers.Pointer

首先创建JNative对象

JNative n=new JNative(*.dll,function)此处为库文件加载并指定方法名

好多刚开始弄的朋友经常会问总是找不到DLL库文件和function方法,那是因为搞JAVA的不熟悉C的库文件创件,我们自己写的文件只提供了对CC++内部的使用,我们需要把外部调用的DLL文件进行声明下面例子就如这样写

#ifndef  wwweee

#define wwweee

extern "C" _declspec (dllexport) int add(int a,int b);

#endif

--------------------------end------------------------next-------I-just-code-it --------------------

 

 

此外大家还可以使用JNI,Jawin,Jacob等方法来做!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值