我是计算机视觉领域的 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 binary main.cpp facerecognition.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 := $(调用我的目录)
包括 $(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 := facerecognition.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 中的线索。
你知道该怎么做吗?提前致谢。
问候。