带有Android本机活动的OpenCV2.4
我目前面临的问题与前面介绍的问题相同,只是我使用2.4版本而不是2.3.1版本带有Android本机活动的OpenCV2.4,android,opencv,native-activity,Android,Opencv,Native Activity,我目前面临的问题与前面介绍的问题相同,只是我使用2.4版本而不是2.3.1版本 我已经将原生活动(从NDK样本)转换为C++和修改的ANDROID.MK和Appultual.MK。 我也犯了同样的错误(使用~Mat等一个) 当我读到问题的答案时,我意识到我需要添加OPENCV\u INSTALL\u模块:=on和OPENCV\u LIB\u TYPE:=STATIC(这很奇怪,因为我还有一个使用原生OPENCV的项目,不需要这两行代码) 但它仍然不起作用 Android.mk如下所示: LOCA
我已经将原生活动(从NDK样本)转换为C++和修改的ANDROID.MK和Appultual.MK。 我也犯了同样的错误(使用~Mat等一个)
当我读到问题的答案时,我意识到我需要添加OPENCV\u INSTALL\u模块:=on和OPENCV\u LIB\u TYPE:=STATIC
(这很奇怪,因为我还有一个使用原生OPENCV的项目,不需要这两行代码)
但它仍然不起作用
Android.mk如下所示:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCV_LIB_TYPE:=STATIC
OPENCV_INSTALL_MODULES:=on
include includeOpenCV.mk
ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
#try to load OpenCV.mk from default install location
include $(TOOLCHAIN_PREBUILT_ROOT)/user/share/OpenCV/OpenCV.mk
else
include $(OPENCV_MK_PATH)
endif
LOCAL_MODULE := native-activity
LOCAL_SRC_FILES := main.cpp engine.cpp
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM
LOCAL_STATIC_LIBRARIES += android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
我得到以下错误:
./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `icvPuts(CvFileStorage*, char const*)':
persistence.cpp:(.text._ZL7icvPutsP13CvFileStoragePKc+0x20): undefined reference to `gzputs'
./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `icvGets(CvFileStorage*, char*, int)':
persistence.cpp:(.text._ZL7icvGetsP13CvFileStoragePci+0x26): undefined reference to `gzgets'
./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `icvXMLSkipSpaces(CvFileStorage*, char*, int)':
persistence.cpp:(.text._ZL16icvXMLSkipSpacesP13CvFileStoragePci+0x1e2): undefined reference to `gzgets'
persistence.cpp:(.text._ZL16icvXMLSkipSpacesP13CvFileStoragePci+0x208): undefined reference to `gzeof'
persistence.cpp:(.text._ZL16icvXMLSkipSpacesP13CvFileStoragePci+0x33c): undefined reference to `gzeof'
./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `_ZL16icvYMLSkipSpacesP13CvFileStoragePcii.clone.3':
persistence.cpp:(.text._ZL16icvYMLSkipSpacesP13CvFileStoragePcii.clone.3+0x124): undefined reference to `gzgets'
persistence.cpp:(.text._ZL16icvYMLSkipSpacesP13CvFileStoragePcii.clone.3+0x170): undefined reference to `gzeof'
/cygdrive/d/soft/NVPACK/android-ndk-r7c/build/core/build-binary.mk:366: recipe for target `obj/local/armeabi-v7a/libnative-activity.so' failed
persistence.cpp:(.text._ZL16icvYMLSkipSpacesP13CvFileStoragePcii.clone.3+0x28e): undefined reference to `gzeof'
./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `cvReleaseFileStorage':
persistence.cpp:(.text.cvReleaseFileStorage+0x24): undefined reference to `gzclose'
./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `cvOpenFileStorage':
persistence.cpp:(.text.cvOpenFileStorage+0x66e): undefined reference to `gzopen'
persistence.cpp:(.text.cvOpenFileStorage+0x8fc): undefined reference to `gzclose'
persistence.cpp:(.text.cvOpenFileStorage+0xaea): undefined reference to `gzrewind'
persistence.cpp:(.text.cvOpenFileStorage+0xbee): undefined reference to `gzrewind'
persistence.cpp:(.text.cvOpenFileStorage+0xc0a): undefined reference to `gzclose'
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi-v7a/libnative-activity.so] Error 1
有什么我遗漏的吗?尝试替换
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM
与
我结束了对native plasma项目的尝试(在该项目中,显示是通过在位图中写入来完成的),它工作得很好 也许格尔斯搞乱了OpenCV。我认为这两个项目之间没有任何其他区别
在某种程度上,问题解决了。不过,如果有人遇到同样的问题并解决了它,我很想了解是什么导致了它,以及如何解决它。虽然这是一个老问题,但我遇到了同样的问题,并通过添加
LOCAL_LDLIBS += -lz # Compression library
对于我的Android.mk来说,通过此更正,我不再有以前的错误,而是:由于APK文件无效,安装失败!请检查logcat输出以了解更多详细信息。发射取消!在日志中:我结束了对本机plasma项目的尝试(在该项目中,显示是通过在位图中写入来完成的),它工作得很好。。。。
LOCAL_LDLIBS += -lz # Compression library