Re: [問題] JNI傳遞參數問題(Pointer)
自問自答好了(如果大家覺得是廢文,可以刪XD)
==Java==
Pointer Image1=Ins.cvLoadImage(FilePath1, 1);
BufferedImage bufimg=t.ToBufferImage(Pointer.nativeValue(Image1));
...
public native BufferedImage ToBufferImage(long img);
...
==C==
JNIEXPORT jobject JNICALL Java_Test_ToBufferImage
(JNIEnv *env, jobject obj, jlong l)
{
IplImage *img=(IplImage *)l;
CvSize size = cvGetSize(img);
...
}
※ 引述《gorocky (哇沙咪)》之銘言:
: 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 15:29, , 1F
11/27 15:29, 1F
推
11/27 15:40, , 2F
11/27 15:40, 2F
推
11/29 13:56, , 3F
11/29 13:56, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):