1

私は 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 にコンパイルする手がかりが得られません。

あなたは何をすべきか知っていますか?前もって感謝します。

よろしく。

4

1 に答える 1

0

含まれている「BUILD_SHARED_LIBRARIES」が表示されないため、これは Android の makefile に基づく推測ですが、次のものが含まれていることに気付きました。

"LOCAL_SHARED_LIBRARIES:= libJsoncpp libopencv_java"

g ++コマンドラインで「-lJsoncpp -lopencv_java」が必要になると思います。

両方のライブラリがビルドされており、「-L」パスのいずれかにあることを確認する必要があります

于 2015-01-19T20:58:24.413 に答える