我是计算机视觉领域的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:undefined 引用`Json :: Value :: Value(Json :: ValueType)'
/home/ec2-user/project/utils.cpp:2478:未定义 引用`Json :: Value :: Value(Json :: ValueType)'
/home/ec2-user/project/utils.cpp:2479:undefined 引用`Json :: Value :: Value(Json :: ValueType)'
/home/ec2-user/project/utils.cpp:2484:undefined 引用`Json :: Value :: Value(int)'
/home/ec2-user/project/utils.cpp:2484:undefined 引用`Json :: Value :: append(Json :: Value const&)'
/home/ec2-user/project/utils.cpp:2484:undefined 引用`Json :: Value :: ~Value()'
/home/ec2-user/project/utils.cpp:2486:undefined 引用`Json :: Value :: Value(std :: string const&)'
/home/ec2-user/project/utils.cpp:2486:undefined 引用`Json :: Value :: operator [](char const *)'
/home/ec2-user/project/utils.cpp:2486:undefined 引用`Json :: Value :: operator =(Json :: Value)'
/home/ec2-user/project/utils.cpp:2486:undefined 引用`Json :: Value :: ~Value()'
/home/ec2-user/project/utils.cpp:2487:undefined 引用`Json :: Value :: Value(Json :: Value const&)'
/home/ec2-user/project/utils.cpp:2487:undefined 引用`Json :: Value :: operator [](char const *)'
/home/ec2-user/project/utils.cpp:2487:undefined 引用`Json :: Value :: operator =(Json :: Value)'
/home/ec2-user/project/utils.cpp:2487:undefined 引用`Json :: Value :: ~Value()'
/home/ec2-user/project/utils.cpp:2488:undefined 引用`Json :: Value :: append(Json :: Value const&)'
/home/ec2-user/project/utils.cpp:2479:undefined 引用`Json :: Value :: ~Value()'
/home/ec2-user/project/utils.cpp:2489:undefined 引用`Json :: Value :: ~Value()'
/home/ec2-user/project/utils.cpp:2491:undefined 引用`Json :: StyledWriter :: StyledWriter()'
/home/ec2-user/project/utils.cpp:2492:undefined 引用`Json :: StyledWriter :: write(Json :: Value const&)'
/home/ec2-user/project/utils.cpp:2475:undefined 引用`Json :: Value :: ~Value()'
/home/ec2-user/project/utils.cpp:2484:undefined 引用`Json :: Value :: ~Value()'
/home/ec2-user/project/utils.cpp:2486:undefined 引用`Json :: Value :: ~Value()'
/home/ec2-user/project/utils.cpp:2487:undefined 引用`Json :: Value :: ~Value()'
/home/ec2-user/project/utils.cpp:2479:undefined 引用`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:= SHARED
LOCAL_C_INCLUDES + = $(LOCAL_PATH)
LOCAL_C_INCLUDES + = / Users / rafaelruizmunoz / OpenCVtry /
LOCAL_C_INCLUDES + = /用户/ rafaelruizmunoz /桌面/ RD / OpenCVtry /库/ jsoncpp主/包括
LOCAL_PATH:= jni
LOCAL_ALLOW_UNDEFINED_SYMBOLS:= true
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 ../../包括/升压
LOCAL_SHARED_LIBRARIES:= libJsoncpp libopencv_java
包括$(BUILD_SHARED_LIBRARY)
完美无缺。
在我的Mac上它完美编译。我必须做的是使用Xcode生成器的JSONCPP Makefile并添加为项目:
但是我已经找不到将其编译成Linux的线索。
你知道该怎么办吗? 提前谢谢。
问候。
答案 0 :(得分:0)
这是基于你的Android makefile的猜测,因为我看不到包含的“BUILD_SHARED_LIBRARIES”,但我注意到你有:
“LOCAL_SHARED_LIBRARIES:= libJsoncpp libopencv_java”
我想你的g ++命令行上需要“-lJsoncpp -lopencv_java”。
您必须确保两个库都已构建,并且可以在其中一个“-L”路径中找到