私は Android 開発者であり、コンピューター ビジョンのエンジニアです。
Mac で OpenCV を使用し、Xcode で OS X 10.9.5 を使用してコンピューター ビジョンのプロジェクトを作成しています。これはクロスプラットフォームであるため、Linux にコンパイルしてアクセスするためのコマンド ラインです (サーバー)。 .
私が抱えている問題は、ライブラリJSONCPP
が認識されていないことです。私はそれをコンパイルします:
g++ -I/home/ec2-user/project/opencv/include/249include/include/ -L/home/ec2-user/project/opencv/build/lib/ -L/home/ec2-user/project/lib/ -I/home/ec2-user/project/jsoncpp-master/include/ -g -o バイナリ main.cpp 顔認識.cpp utils.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib - lopencv_legacy -lopencv_stitching -lopencv_flann -w -std=c++11
出力のどの部分ですか:
/home/ec2-user/project/utils.cpp:2475: 「Json::Value::Value(Json::ValueType)」への未定義の参照
/home/ec2-user/project/utils.cpp:2478: 「Json::Value::Value(Json::ValueType)」への未定義の参照
/home/ec2-user/project/utils.cpp:2479: 「Json::Value::Value(Json::ValueType)」への未定義の参照
/home/ec2-user/project/utils.cpp:2484: 「Json::Value::Value(int)」への未定義の参照
/home/ec2-user/project/utils.cpp:2484: 「Json::Value::append(Json::Value const&)」への未定義の参照
/home/ec2-user/project/utils.cpp:2484: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2486: 「Json::Value::Value(std::string const&)」への未定義の参照
/home/ec2-user/project/utils.cpp:2486: `Json::Value::operator[](char const*)' への未定義の参照
/home/ec2-user/project/utils.cpp:2486: 「Json::Value::operator=(Json::Value)」への未定義の参照
/home/ec2-user/project/utils.cpp:2486: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2487: 「Json::Value::Value(Json::Value const&)」への未定義の参照
/home/ec2-user/project/utils.cpp:2487: `Json::Value::operator[](char const*)' への未定義の参照
/home/ec2-user/project/utils.cpp:2487: 「Json::Value::operator=(Json::Value)」への未定義の参照
/home/ec2-user/project/utils.cpp:2487: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2488: `Json::Value::append(Json::Value const&)' への未定義の参照
/home/ec2-user/project/utils.cpp:2479: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2489: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2491: `Json::StyledWriter::StyledWriter()' への未定義の参照
/home/ec2-user/project/utils.cpp:2492: `Json::StyledWriter::write(Json::Value const&)' への未定義の参照
/home/ec2-user/project/utils.cpp:2475: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2484: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2486: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2487: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2479: `Json::Value::~Value()' への未定義の参照
このMakefileを使用して、以前にAndroid(NDK)用にこれをコンパイルしたことに言及する必要があります。
LOCAL_PATH := $(my-dir を呼び出す)
$(CLEAR_VARS) を含める
OPENCV_CAMERA_MODULES:=オフ
OPENCV_INSTALL_MODULES:=オン
$(LOCAL_PATH)/jsoncpp/Android.mk を含める
/Users/rafaelruizmunoz/Desktop/AndroidDevelopment/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk を含めます
OPENCV_LIB_TYPE:=共有
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_C_INCLUDES += /Users/rafaelruizmunoz/OpenCVtry/
LOCAL_C_INCLUDES += /Users/rafaelruizmunoz/Desktop/RD/OpenCVtry/Libraries/jsoncpp-master/include
LOCAL_PATH := jni
LOCAL_ALLOW_UNDEFINED_SYMBOLS:= 真
LOCAL_MODULE := libXYZ
LOCAL_MODULE_NAME := mylibXYZ
LOCAL_SRC_FILES := 顔認識.cpp androidClass.cpp main.cpp utils.cpp helper.cpp lbp.cpp
LOCAL_LDLIBS += -llog -ldl
LOCAL_CPPFLAGS := -std=c++11
LOCAL_CFLAGS := -w
CFLAGS=-w -g -Wall -Wextra -std=c++11 -Wno-write-strings ../../include/boost
LOCAL_SHARED_LIBRARIES := libJsoncpp libopencv_java
$(BUILD_SHARED_LIBRARY) を含める
これは完璧に機能しました。
私のMacでは、完全にコンパイルされます。私がしなければならなかったのは、Xcode ジェネレーターを使用し、プロジェクトとして追加する JSONCPP Makefile です。
しかし、それを Linux にコンパイルする手がかりが得られません。
あなたは何をすべきか知っていますか?前もって感謝します。
よろしく。