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 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 中的线索。

你知道该怎么做吗?提前致谢。

问候。

4

1 回答 1

0

这是基于您的 Android makefile 的猜测,因为我看不到包含的“BUILD_SHARED_LIBRARIES”,但我注意到您有:

“LOCAL_SHARED_LIBRARIES := libJsoncpp libopencv_java”

我想你的 g++ 命令行上需要“-lJsoncpp -lopencv_java”。

您必须确保两个库都已构建并且可以在“-L”路径之一中找到

于 2015-01-19T20:58:24.413 回答