我正在开发一套设备的应用接口,是准备用C++开发的。有部份客户是使用java平台开发应用的,所以我设计api时希望java用户能够方便的使用。查看了一些资料,java可以用JNI方便的调用c++写的dll中的接口函数,可以找到很多例子。但是所有例子都是介绍调用接口函数的,就是说dll都是由单个的函数组成的。我想希望的能用c++设计出用类封装的动态链接库,但是不知道java是否可以方便的调用动态库中的类对象呢?

解决方案 »

  1.   

    直接调用是不行的,jni只认特定名称的函数如果你想调用已有的dll文件的话,按照一下步骤做:1、设计java文件,使其每一个native函数对应已有dll的函数
    2、用javah命令从class文件中生成.h头文件
    3、将.h文件里面的所有函数实现一遍,每个函数内部调用并返回已有dll的函数的结果
    4、生成jni的dll文件,把它和原先的dll文件一同放到PATH对应的路径下,之后就能用java调用了
      

  2.   

    谢谢回答。楼上的几位都没有明白我的问题,我并不是想问是否可以直接调用的问题,我是想问能否调用用c++设计的class,而非函数。能查到的很多的使用JNI的例子,都是调用动态链接中的函数的。也就是说dll本身是由函数封装而成的,可如果是class呢,如何调用?
      

  3.   

    不能直接调用,java只能调用函数