У меня есть проект о сшивании изображений, и я использую opencv 2.4.5 и java. Все мои коды являются java-кодами, и он работает отлично, когда это проект java. Я передал свой код в андроид, импортировал opencv-245.jar и opencv_java245.dll в свой проект, после чего настроил путь сборки. Но когда мой код приходит System.loadLibrary (...):Android Emulator не может загрузить родную библиотеку
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, но проект андроида ... Наверное, я не знаю чего-то или чего-то не хватает. –
Потому что вы не компилируете его правильно. Если он работает в Java-проекте (вне эмулятора Android), то он не будет работать в Android, просто потому, что наборы инструкций отличаются (Android-> ARM/RISC, PC-> CISC) – SJuan76