Mic*_*ick 3 eclipse android opencv android-ndk
我有一个使用一些C++和OpenCV的完全工作的应用程序.它编译并成功运行.现在我只是想整理我的代码并进行更改以在编译时删除所有警告.但有一个我不明白的警告.它似乎是我的android.mk的问题.
编译时,控制台输出如下:
06:58:21 **** Incremental Build of configuration Default for project Motion ****
"C:\\android-ndk-r9c\\ndk-build.cmd" all
Android NDK: WARNING:jni/Android.mk:mixed_sample: non-system libraries in linker flags: -lopencv_java
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK: current module
[armeabi-v7a] Compile++ thumb: mixed_sample <= cpp_part.cpp
[armeabi-v7a] SharedLibrary : libmixed_sample.so
C:/android-ndk-r9c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: warning: hidden symbol '__aeabi_atexit' in C:/android-ndk-r9c/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_static.a(atexit_arm.o) is referenced by DSO c:/opencv-2.4.8-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_java.so
[armeabi-v7a] Install : libmixed_sample.so => libs/armeabi-v7a/libmixed_sample.so
06:58:24 Build Finished (took 2s.515ms)
Run Code Online (Sandbox Code Playgroud)
我的android.mk如下:
LOCAL_PATH := $(call my-dir)
# compile with profiling
LOCAL_CFLAGS := -pg
include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES:=off
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include c:\opencv-2.4.8-android-sdk/sdk/native/jni/OpenCV.mk
LOCAL_MODULE := mixed_sample
LOCAL_SRC_FILES := cpp_part.cpp
LOCAL_LDLIBS += -llog -ldl -lz
LOCAL_STATIC_LIBRARIES := android-ndk-profiler
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android-ndk-profiler)
Run Code Online (Sandbox Code Playgroud)
我甚至无法确定"-lopencv_java"链接器标志来自何处,它不会出现在android.mk中的任何位置.
有任何想法吗?
编辑:回应Alex Cohn的问题.如果我在"include $(CLEAR_VARS)"之前的行中添加"$(info == $(OPENCV_INSTALL_MODULES)==)",则控制台将报告以下内容:
08:39:34 **** Incremental Build of configuration Default for project Motion ****
"C:\\android-ndk-r9c\\ndk-build.cmd" all
====
Android NDK: WARNING:jni/Android.mk:mixed_sample: non-system libraries in linker flags: -lopencv_java
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK: current module
[armeabi-v7a] Compile++ thumb: mixed_sample <= cpp_part.cpp
[armeabi-v7a] SharedLibrary : libmixed_sample.so
C:/android-ndk-r9c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: warning: hidden symbol '__aeabi_atexit' in C:/android-ndk-r9c/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_static.a(atexit_arm.o) is referenced by DSO c:/opencv-2.4.8-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_java.so
[armeabi-v7a] Install : libmixed_sample.so => libs/armeabi-v7a/libmixed_sample.so
08:39:36 Build Finished (took 2s.564ms)
Run Code Online (Sandbox Code Playgroud)
在includeOpenCV.mk 之前,你必须确保它$(OPENCV_INSTALL_MODULES)是相同的.你OPENCV_INSTALL_MODULES:=on的Android.mk文件中有这一行,但由于某种原因它不起作用.如果不深入研究所有可能的(也是不可能的)问题,解决问题的简单方法就是编写
override OPENCV_INSTALL_MODULES:=on
Run Code Online (Sandbox Code Playgroud)
在你的Android.mk; 另一个 - 跑
ndk-build OPENCV_INSTALL_MODULES=on
Run Code Online (Sandbox Code Playgroud)
从命令行.
| 归档时间: |
|
| 查看次数: |
6600 次 |
| 最近记录: |