楼主最近想要用Java调用c++封装的dll文件,里面的接口和参数列表都知道,也有这个dll的头文件,也通过Javah生成了.h的头文件,有个问题想不通,我的Java native方法中传递进去一个byte数组,里面都是0就是一个空图片,然后调用接口给图片数组赋值,但是接口定义的返回值类型是int类型的,也就是操作成功或失败的代码,但是如果成功了 byte数组里面就会有值了,我想不明白这个byte数组里的值是怎么得到的,Java里不想C++里面有指针,那数组里面的值是怎么传回来的呢?大概的方法就是这样的
//native 方法 public static native int getPic(String path,byte[] picByte); //调用 public byte[] getPicFromCPP(String path){ byte[] pic = new byte[1024*1024*2]; int flag = getPic(path,pic); if(flag != 0){//0就是返回成功 如果返回失败就继续调用直到成功 flag = getPic(path,pic); } return pic }
如果调用成功了这个pic就会有值了,我对这个很奇怪,按照Java的方式去考虑,返回的pic应该是一个空的图片,但是结果不是,想问下这是怎么一回事。说的直白一点。