关于JNA

来源:互联网 发布:flv在线视频捕捉软件 编辑:程序博客网 时间:2024/05/19 09:14

最近在做用java调C写的dll库,以前没怎么做过这方面的东西,真是磕磕绊绊啊~~好在折腾了几天弄的差不多了,现总结一下:

1.关于JNA不支持64位jdk

一开始加载dll库文件老是出错,加载失败,提示找不到库文件,在网上查找了半天,将dll放到了无数个地方试了一遍,均不行;然后使用绝对路径,还是不行,绝望中看到JNA和JNative是不支持64位jdk的,于是又重新装了个32位jdk,好了!Y(^o^)Y

——————————————————————————————————————————————————————————

2012-08-17 今天将程序push到linux下了,鉴于在windows上64位jdk运行没通过,直接在64位linux下装了32位jdk,编译运行32位library(.so文件)是ok的,但是编译64位library的时候会出现: wrong ELF class: ELFCLASS64 错误! 于是又重新装了64位jdk, = =#,一试,成功了!!!( ⊙ o ⊙ )!难道之前我推测的JNA不支持64位jdk是错误的?

还是在linux下可以支持64位jdk? 迷茫ing~~还有待研究 +_+。。。


2.调用c函数的时候,出现

#
# An unexpected error has been detected by Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x05f973ef, pid=3756, tid=208
#
# Java VM: Java HotSpot(TM) Client VM (11.0-b15 mixed mode, sharing windows-x86)
# Problematic frame:
# C  [WDAPI1020.dll+0x73ef]
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

也是纠结半天无果,网上众说纷纭,最后还是参数传递的地方出了问题,参数的数据类型不一致。C和java的数据类型对应问题很令人头疼啊!!!


别的大问题暂时还没发现,有问题了再上来记录~~~