2011-01-30 141 views
0

Man ...这个bug让我失望。JNI和Android ... UnsatisfiedLinkError

的logcat:

01-29 22:25:00.293: ERROR/AndroidRuntime(27386): FATAL EXCEPTION: main 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386): java.lang.IllegalStateException: Could not execute method of the activity 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at android.view.View$1.onClick(View.java:2072) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at android.view.View.performClick(View.java:2408) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at android.widget.CompoundButton.performClick(CompoundButton.java:99) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at android.view.View$PerformClick.run(View.java:8819) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at android.os.Handler.handleCallback(Handler.java:587) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at android.os.Handler.dispatchMessage(Handler.java:92) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at android.os.Looper.loop(Looper.java:123) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at java.lang.reflect.Method.invoke(Method.java:521) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at dalvik.system.NativeStart.main(Native Method) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386): Caused by: java.lang.reflect.InvocationTargetException 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at com.example.viewer.Viewer.denoiseSlice(Viewer.java:170) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at java.lang.reflect.Method.invoke(Method.java:521) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at android.view.View$1.onClick(View.java:2067) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  ... 12 more 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386): Caused by: java.lang.UnsatisfiedLinkError: RicianDenoise 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  at com.example.viewer.Viewer.RicianDenoise(Native Method) 
01-29 22:25:00.293: ERROR/AndroidRuntime(27386):  ... 16 more 

加载库,并声明它:

public native void RicianDenoise(int w, int h, int p, 
     short [] s_noised_slice, double [] d_noised_slice, 
     short [] s_denoised_slice, double [] d_denoised_slice); 

    static { 
     System.loadLibrary("denoise"); 
    } 

C功能:

void 
Java_com_example_viewer_Viewer_RicianDenoise (JNIEnv *env, jclass cls, jint M, 
               jint N, jint P, jshort * s_noised_slice, 
               jdouble * d_noised_slice, 
               jshort * s_denoised_slice, 
               jdouble * d_denoised_slice) { 
    /* ... */ 
} 

我跑

ndk-build -B -C [project]/jni

我不能得到任何工作。任何建议,或经验与这个问题? logcat中的调用行是我只是试图调用函数,顺便说一句。感谢您......请我的英雄:(

+0

,我不知道我该怎么做它:C++中,JNI

使用在本机端此方案来声明数组工作,不幸的是,这个函数只是让这个Activity退出错误消息...所以我们在这里发现另一个bug:/ – 2011-01-30 06:55:36

回答

1

阵列并没有转化为数组类型的指针在C /再次
双[]使用jdoubleArray
短期[]使用jshortArray

+0

稍后发现。谢谢。 – 2011-01-31 20:48:11

0

贵库使用其他C/C++库,并使用系统路径是那些可达?在Java中

+0

,, ...我会这么认为? – 2011-01-30 06:33:20