QT Widget, использующий ошибку OpenCV при развертывании на Android [duplicate]

0

Я хотел бы создать виджет QT (C++) и использовать библиотеку OpenCV (C++) и развернуть его на Android.

Я установил QT для Android и необходимые файлы, упомянутые в http://qt-project.org/doc/qt-5/androidgs.html, такие как NDK, SDK и т.д. Компилятор mingw включен в QT для Android, поэтому я не нужно было устанавливать это снова.

У меня нет проблем с развертыванием виджета QT для Android. Проблема заключается в использовании библиотеки OpenCV в виджетах QT, а затем ее развертывании.

Я пробовал два варианта использования OpenCV в моем проекте QT:

  1. Поскольку QT для Android поставляется с компилятором mingw, я скомпилировал библиотеку OpenCV из источника, используя CMake и компилятор mingw. Затем я включил файлы заголовков и связал библиотеки в файле проекта QT. Этот параметр не работает. Я привык к этому методу включения, а также хотел бы использовать другие библиотеки, такие как Boost и Eigen, таким же образом.

  2. Я загрузил SDK OPENCV android и включил его файлы заголовков и связал его с библиотеками в файле проекта QT. Это все еще не сработало.

В основном все, что я хочу сделать, это только код в C++, поэтому используйте виджет, а не qtquick (qml). Пожалуйста, сообщите мне, какие из приведенных выше шагов являются правильными и какие изменения я должен внести.

В другом примечании кто-нибудь знает, как я могу ускорить эмулятор, у меня есть процессор AMD, поэтому не могу воспользоваться инструментами intels. И где я могу получить настройки AVD для Samsung Note 4?

Огромное спасибо!!

Файл проекта для варианта 1:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = test3
TEMPLATE = app


LIBS+= C:\programs\opencv\RELEASE\lib\\\*
INCLUDEPATH+= C:\programs\opencv\RELEASE\install\include\

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

CONFIG += mobility
MOBILITY = 

Ошибки для варианта 1:

12:18:17: Starting: "C:\programs\QT\Tools\mingw482_32\bin\mingw32-make.exe" 
C:\programs\QT\5.3\android_armv7\bin\qmake.exe -spec android-g++ CONFIG+=debug -o Makefile ..\test3\test3.pro
The system cannot find the path specified.
C:\programs\android-ndk-r10c/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/bin/arm-linux-androideabi-g++ --sysroot=C:\programs\android-ndk-r10c/platforms/android-9/arch-arm/ -Wl,-soname,libtest3.so -Wl,--no-undefined -Wl,-z,noexecstack -shared -o libtest3.so main.obj mainwindow.obj moc_mainwindow.obj   -LC:\programs\android-ndk-r10c/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a -LC:\programs\android-ndk-r10c/platforms/android-9/arch-arm//usr/lib C:\programs\opencv\RELEASE\lib\\* -LC:/programs/QT/5.3/android_armv7/lib -lQt5Widgets -Lc:\Utils\android\ndk/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a -Lc:\Utils\android\ndk/platforms/android-9/arch-arm//usr/lib -LC:\Utils\icu32_51_1_mingw482\lib -LC:\utils\postgresql\pgsql\lib -LC:\utils\mysql\mysql\lib -LC:\Utils\pgsql\lib -LC:\temp\opensll-android-master\openssl-android-master\lib -LC:\programs\QT\5.3\android_armv7/lib -lQt5Gui -lQt5Core -lGLESv2 -lgnustl_shared -llog -lz -lm -ldl -lc -lgcc
..\..\opencv\RELEASE\install\include/opencv2/core/mat.hpp:278: error: undefined reference to 'cv::fastFree(void*)'
..\..\opencv\RELEASE\install\include/opencv2/core/mat.hpp:298: error: undefined reference to 'cv::Mat::copySize(cv::Mat const&)'
..\..\opencv\RELEASE\install\include/opencv2/core/mat.hpp:367: error: undefined reference to 'cv::Mat::deallocate()'
..\test3/main.cpp:23: error: undefined reference to 'cv::imread(std::string const&, int)'
..\test3/main.cpp:31: error: undefined reference to 'cv::namedWindow(std::string const&, int)'
..\test3/main.cpp:32: error: undefined reference to 'cv::_InputArray::_InputArray(cv::Mat const&)'
Makefile:82: recipe for target 'libtest3.so' failed
..\test3/main.cpp:32: error: undefined reference to 'cv::imshow(std::string const&, cv::_InputArray const&)'
..\test3/main.cpp:34: error: undefined reference to 'cv::waitKey(int)'
collect2.exe: error: ld returned 1 exit status
mingw32-make: *** [libtest3.so] Error 1
12:18:22: The process "C:\programs\QT\Tools\mingw482_32\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project test3 (kit: Android for armeabi-v7a (GCC 4.9, Qt 5.3.2))
When executing step "Make"
12:18:22: Elapsed time: 00:04.

Файл проекта для варианта 2:

   #-------------------------------------------------
#
# Project created by QtCreator 2014-12-05T18:06:24
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = test3
TEMPLATE = app

INCLUDEPATH+= C:\programs\opencvandroidsdk\sdk\native\jni\include

LIBS += -LC:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\
-lopencv_contrib \
-lopencv_legacy \
-lopencv_ml \
-lopencv_objdetect \
-lopencv_calib3d \
-lopencv_video \
-lopencv_features2d \
-lopencv_highgui \
-lopencv_androidcamera \
-lopencv_flann \
-lopencv_imgproc \
-lopencv_core

LIBS += -LC:\programs\opencvandroidsdk\sdk\native\3rdparty\libs\armeabi-v7a\
-llibjpeg \
-llibpng \
-llibtiff \
-llibjasper \
-ltbb \
-lIlmImf

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

CONFIG += mobility
MOBILITY =

Ошибки для варианта 2:

18:24:53: Running steps for project test3...
18:24:53: Configuration unchanged, skipping qmake step.
18:24:53: Starting: "C:\programs\QT\Tools\mingw482_32\bin\mingw32-make.exe" 
mingw32-make: Nothing to be done for 'first'.
18:24:55: The process "C:\programs\QT\Tools\mingw482_32\bin\mingw32-make.exe" exited normally.
18:24:55: Starting: "C:\programs\QT\Tools\mingw482_32\bin\mingw32-make.exe" INSTALL_ROOT="C:\programs\QT projects\build-test3-Android_for_armeabi_v7a_GCC_4_9_Qt_5_3_2-Release\android-build" install
copy /y "libtest3.so" "C:\programs\QT projects\build-test3-Android_for_armeabi_v7a_GCC_4_9_Qt_5_3_2-Release\android-build\libs\armeabi-v7a\libtest3.so"
The system cannot find the path specified.
        0 file(s) copied.
Makefile:1627: recipe for target 'install_target' failed
mingw32-make: [install_target] Error 1 (ignored)
18:24:57: The process "C:\programs\QT\Tools\mingw482_32\bin\mingw32-make.exe" exited normally.
Error while building/deploying project test3 (kit: Android for armeabi-v7a (GCC 4.9, Qt 5.3.2))
When executing step "Deploy to Android device"
18:27:00: Elapsed time: 02:07.
  • 0
    Никаких подробностей о том, «что не работает», и кода, вставленного для пробной версии; невозможно помочь.
  • 0
    @lpapp Я вставил код. Спасибо!
Показать ещё 2 комментария
Теги:
opencv
qt
android-ndk

1 ответ

1
Лучший ответ

Для варианта 2:

+ Изменить

LIBS += \
C:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\libopencv_contrib.a \
C:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\libopencv_legacy.a \
C:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\libopencv_ml.a \
C:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\libopencv_objdetect.a\
C:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\libopencv_calib3d.a \
C:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\libopencv_video.a \
C:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\libopencv_features2d.a \
C:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\libopencv_highgui.a \
C:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\libopencv_androidcamera.a \
C:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\libopencv_flann.a \
C:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\libopencv_imgproc.a \
C:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\libopencv_core.a \
C:\programs\opencvandroidsdk\sdk\native\3rdparty\libs\armeabi-v7a\liblibjpeg.a \
C:\programs\opencvandroidsdk\sdk\native\3rdparty\libs\armeabi-v7a\liblibpng.a \
C:\programs\opencvandroidsdk\sdk\native\3rdparty\libs\armeabi-v7a\liblibtiff.a \
C:\programs\opencvandroidsdk\sdk\native\3rdparty\libs\armeabi-v7a\liblibjasper.a \
C:\programs\opencvandroidsdk\sdk\native\3rdparty\libs\armeabi-v7a\libtbb.a \

чтобы:

LIBS += -LC:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a \  
-lopencv_legacy \  
-lopencv_ml \  
-lopencv_objdetect\  
... \  
-ltbb
  • 0
    Спасибо, теперь я получаю сообщение об ошибке «дополнительные символы после выражения». Я обновил свой вопрос, чтобы показать ошибку
  • 0
    Извините, это моя вина. Удалите libopencv_contrib.a из -LC: \ Programs \ opencvandroidsdk \ sdk \ native \ libs \ armeabi-v7a \ libopencv_contrib.a. Так что -L для каталога lib и -l для файлов библиотеки. Чтобы добавить libBlaBla.a, используйте -lBlaBla (без lib и .a)
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню