【发布时间】:2020-03-15 01:26:30
【问题描述】:
我看到undefined reference to std::ios_base::Init::Init()和undefined reference to `std::ios_base::Init::Init()'类似的问题,但我不确定我是否有同样的情况。
我在Android Studio 3.5 上配置opencv for android 3.4.7。我通过编辑CMakeList.txt和build.gradle导入了opencv的库:
set(opencv_version OpenCV3-android-sdk)
set(OpenCV_STATIC ON)
set(OpenCV_DIR /home/lynx/Android/Proj/${opencv_version}/sdk/native/jni)
find_package(OpenCV REQUIRED)
if (OpenCV_FOUND)
message(WARNING "opencv libs: ${OpenCV_LIBS}")
else (OpenCV_FOUND)
message(WARNING "opencv not found!")
endif(OpenCV_FOUND)
target_link_libraries(
${OpenCV_LIBS})
sourceSets {
main {
jniLibs.srcDirs = ['/home/lynx/Android/Proj/OpenCV3-android-sdk/sdk/native/libs']
}
}
而我的native-lib.cpp 是
#include <jni.h>
#include <string>
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_stitch_MainActivity_stringFromJNI(
JNIEnv *env,
jobject /* this */) {
std::string hello = "Hello from OpenCV " + (std::string)CV_VERSION;
return env->NewStringUTF(hello.c_str());
}
在构建项目时,它显示来自opencv 文件的许多undefined reference 错误。用c链接器链接cpp文件似乎不是问题:它调用clang++来完成任务,当不使用opencv时,项目可以构建成功。
是不是因为我没有正确配置opencv?
【问题讨论】:
标签: c++ android-studio android-ndk opencv4android