0
我有一個關於拼接圖像的項目,我使用的是opencv 2.4.5和java。我所有的代碼都是java代碼,當它是一個java項目時它運行的很完美。我將我的代碼轉移到android,將opencv-245.jar和opencv_java245.dll導入到我的項目中,然後配置構建路徑。但是,當我的代碼來的System.loadLibrary(...):Android模擬器無法加載本機庫
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat image1= Highgui.imread(imgs.get(0).toString() , 1);
Mat image2= Highgui.imread(imgs.get(1).toString() , 1);
...
它給出了一個錯誤,無法加載OpenCV的本地庫(opencv_java245.dll)。我在互聯網上搜索它,並閱讀了很多東西,但沒有找到答案。他們大多數是關於android ndk,但我不使用它,我的代碼不是C++。我試圖使用System.load(路徑),但它再次失敗。請給我任何建議。謝謝。
UPDATE: 堆棧跟蹤:
06-23 18:23:37.884: E/AndroidRuntime(443): FATAL EXCEPTION: main
06-23 18:23:37.884: E/AndroidRuntime(443): java.lang.IllegalStateException: Could not execute method of the activity
06-23 18:23:37.884: E/AndroidRuntime(443): at android.view.View$1.onClick(View.java:2704)
06-23 18:23:37.884: E/AndroidRuntime(443): at android.view.View.performClick(View.java:3100)
06-23 18:23:37.884: E/AndroidRuntime(443): at android.view.View$PerformClick.run(View.java:11644)
06-23 18:23:37.884: E/AndroidRuntime(443): at android.os.Handler.handleCallback(Handler.java:587)
06-23 18:23:37.884: E/AndroidRuntime(443): at android.os.Handler.dispatchMessage(Handler.java:92)
06-23 18:23:37.884: E/AndroidRuntime(443): at android.os.Looper.loop(Looper.java:126)
06-23 18:23:37.884: E/AndroidRuntime(443): at android.app.ActivityThread.main(ActivityThread.java:3997)
06-23 18:23:37.884: E/AndroidRuntime(443): at java.lang.reflect.Method.invokeNative(Native Method)
06-23 18:23:37.884: E/AndroidRuntime(443): at java.lang.reflect.Method.invoke(Method.java:491)
06-23 18:23:37.884: E/AndroidRuntime(443): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
06-23 18:23:37.884: E/AndroidRuntime(443): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
06-23 18:23:37.884: E/AndroidRuntime(443): at dalvik.system.NativeStart.main(Native Method)
06-23 18:23:37.884: E/AndroidRuntime(443): Caused by: java.lang.reflect.InvocationTargetException
06-23 18:23:37.884: E/AndroidRuntime(443): at java.lang.reflect.Method.invokeNative(Native Method)
06-23 18:23:37.884: E/AndroidRuntime(443): at java.lang.reflect.Method.invoke(Method.java:491)
06-23 18:23:37.884: E/AndroidRuntime(443): at android.view.View$1.onClick(View.java:2699)
06-23 18:23:37.884: E/AndroidRuntime(443): ... 11 more
06-23 18:23:37.884: E/AndroidRuntime(443): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load opencv_java245: findLibrary returned null
06-23 18:23:37.884: E/AndroidRuntime(443): at java.lang.Runtime.loadLibrary(Runtime.java:425)
06-23 18:23:37.884: E/AndroidRuntime(443): at java.lang.System.loadLibrary(System.java:554)
06-23 18:23:37.884: E/AndroidRuntime(443): at org.myproject.stitching_android.SDCardToGridView.onClickStitching(SDCardToGridView.java:90)
06-23 18:23:37.884: E/AndroidRuntime(443): ... 14 more
等待的文件,是什麼?你正試圖加載一個dll到Android?你不知道[一個DLL只是Windows兼容](http://en.wikipedia.org/wiki/Dynamic-link_library)?你不能在Android上加載它 – BackSlash
它爲java和android調用本地庫。我們可以在Android NDK中使用它,但是我的所有代碼都是java,當我在java項目中使用它時,它的運行非常完美,但是android項目...我想我不知道某些東西或缺少某些東西。 –
因爲你沒有編譯它的權利。如果它運行在Java項目中(Android模擬器之外),那麼它將不能在Android中工作,僅僅因爲指令集不同(Android-> ARM/RISC,PC-> CISC) – SJuan76