看板 java 關於我們 聯絡資訊
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
gorocky:也試了IplImage *img=(IplImage *)l; 11/27 13:43
gorocky:搞定了... 11/27 14:01