最近用java和flex交互开发一个餐饮管理系统,涉及到会员卡和ic卡读写器,购买来一套设备,厂家提供了一个windows动态库文件(dll),我需要在java中调用该动态库里的函数,我尝试使用jni调用dll的方法来做,但出现c和java的类型不匹配的问题,java中无法编译和运行通过,不知哪位高手此前做过,提供下帮助,本人是最近刚接触这方面。

解决方案 »

  1.   

    2种编程语言,基本类型所占得位数不一样。
    lz参考下
    The Java™ Native Interface
    Programmer’s Guide and Specificationsun上的。
      

  2.   

    http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jni.html
      

  3.   

    试试jawin 我用的时候还比较爽
      

  4.   


    这个dll既然是windows下用的,那么,java就不能直接用,你还是自己写一个dll文件吧,通过你写的dll文件调用厂家提供的dll文件才行。因为java可以调用的dll文件的出口方法特别怪,名字是java_method_xxx这样以java打头的复杂名字的才行。所以你要把native方法用javah编译成.h头文件,然后用jni写成dll实现这个头文件。在你的实现里,就可以调用厂家的dll文件了,因为dll调dll没有问题的。
      

  5.   

    现在对于用java来写这个文件有点困难,
      

  6.   

    c和java  在某些类型上确实是不一样的,没做过这方面的,期待高手。
      

  7.   

    java的jni是不能直接调用普通的dll的,只能在原有的dll上写一个jni的dll,用这个jni dll做一个桥,就能在java里用了
      

  8.   

    除了jni,还有jna
    https://jna.dev.java.net/
      

  9.   

    根据jdk提供的工具 把相应的带有native的方法生成c的头文件  然后在实现....
      

  10.   

    根据厂商提供的接口自己在DLL文件中写实现方法无从下手