2016-06-29 13 views
2

私はNDKでAndroidアプリをC++/OpenCVのコードをインポートしていますとネイティブC++コンパイルにのためのOpenCVのディレクトリを含めます。まず第一に、私はプログラミングに勉強していないと言わなければならない、私は単なるアマチュア開発者なので、私が管理していないことがたくさんある(特に、コーディングから外れている)。Android.mkは - NDK

私はC++/OpenCVのコードをQtCreatorを使用して、私は私のProject.proにこの行を書いた:

INCLUDEPATH += path/to/OpenCV/main/dir #OpenCV-3.1.0 
LIBS += -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc 

今、私が作るしようとしているの "Hello World!" を私のC++ソースでコンパイルできることを確認してください。 bar.cppで

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

LOCAL_MODULE := myModule 
LOCAL_CFLAGS += -I /path/to/OpenCV/main/dir 
LOCAL_LDLIBS := -lopencv_core 
LOCAL_SRC_FILES := bar.cpp 

include $(BUILD_SHARED_LIBRARY) 

は、私が持っている:

https://developer.android.com/ndk/guides/android_mk.htmlによると、私はこの単純なAndroid.mkファイルを書いた

#include <opencv2/core/core.hpp> 

ただ、コンパイラがソースを見つけたことをチェックするため。私はNDKビルドを使用して、私のC++/OpenCVのネイティブコードをビルドしようとすると、私が手:

non-system libraries in linker flags: -lopencv_core 
Android NDK:  This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the current module 

私はLOCAL_STATIC_LIBRARIESとLOCAL_SHARED_LIBRARIESを使用するようにしようと試みたが、ないsucced。何か案は?


P.S:

それは私がこの例https://gist.github.com/gnuanu/252fd406f48f7da2c1c7以下(いずれかのOpenCVのヘッダを含むwthout)NDKを使用して簡単なこんにちは、世界をコンパイルしたと言うことが重要です。

あり、ここでポストAndroid.mk: how to include ffmpeg and Opencvがあるが、それは答えを持っていないと私は情報に解決することはできません...

答えて

5

まず、OpenCV for Androidをダウンロードしてください。あなただけがあなたのAndroid.mkファイルに次のように設定する必要があり、OpenCVのnativを使用している場合:

LOCAL_PATH := $(call my-dir) 

CVROOT := path_to_opencv/OpenCV-android-sdk/sdk/native/jni 

include $(CLEAR_VARS) 
OPENCV_INSTALL_MODULES:=on 
OPENCV_LIB_TYPE:=STATIC 
include $(CVROOT)/OpenCV.mk 

LOCAL_MODULE += myModule 

LOCAL_C_INCLUDES += path_to_your_code/bar.h 
LOCAL_SRC_FILES += path_to_your_code/bar.cpp 

LOCAL_CFLAGS += -std=c++11 -frtti -fexceptions -fopenmp -w 
LOCAL_LDLIBS += -llog -L$(SYSROOT)/usr/lib 
LOCAL_LDFLAGS += -fopenmp 

include $(BUILD_SHARED_LIBRARY) 

クールな事はOpenCVのはOpenCV.mkのmakefileを提供し、あなたが何かをしないことがあるということです。)

+0

ありがとう、bashbug!それは今、完璧に動作します。私はApplication.mkのAPP_STLパラメータをstlport_staticからgnustl_sharedに変更しなければなりませんでした。この記事で説明したようにhttp://stackoverflow.com/questions/34740413/using-native-opencv-3-0-0-in-android-studio -1-5-グラデル - 実験 - 0-4-0まで。私はなぜ、私はSTLのバージョン間の違いを知らない正確に理解していない、それはアマチュアXDの問題です – user3368457

+0

私はそれが助けてうれしいです!私の答えを受け入れてください;) – bashbug

+0

ありがとうトン!あなたの答えは、opencvのndk設定をスムーズにアップグレードするのに役立ちました。 – CaladanBrood

関連する問題