[問題] JNI傳遞參數問題(Pointer)
JNI和JNA可以同時運行嗎?
範例
==Java==
public class Test{
public static void main(String[] args) {
...
com.sun.jna.Pointer Image1=Ins.cvLoadImage("dog.jpg", 1);
Test t=new Test();
BufferedImage bufimg=t.ToBufferImage(Image1);
}
public native BufferedImage ToBufferImage(com.sun.jna.Pointer img);
static{
System.loadLibrary("opencv_core243");
System.loadLibrary("opencv_highgui243");
System.loadLibrary("opencv_imgproc243");
System.loadLibrary("t");//透過GCC產生的DLL檔
}
}
==C==
JNIEXPORT jobject JNICALL Java_Test_ToBufferImage
(JNIEnv *env, jobject obj, IplImage *img)
{
CvSize size = cvGetSize(img);
...
jobject bufferedImage=....
...
return bufferedImage;
}
問題:
不知怎麼讓Java傳遞com.sun.jna.Pointer 到C當中?
如果JNI和JNA不能同時運行的話,試過用Jlong的方式,但也失效?
不知哪出問題?
==Java==
BufferedImage bufimg=t.ToBufferImage(Image1.getLong(0));
public native BufferedImage ToBufferImage(long img);
==C==
JNIEXPORT jobject JNICALL Java_Test_ToBufferImage
(JNIEnv *env, jobject obj, jlong l)
{
IplImage *img;
*img=l;
}
是在C轉換的地方寫錯呢?還是不是該用Jlong的方式轉?
能否請板上的大大指點給方向?謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.61.97.145
→
11/27 13:43, , 1F
11/27 13:43, 1F
→
11/27 14:01, , 2F
11/27 14:01, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):