Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV未定义引用_Opencv_Opencv4android_Opencv3.0 - Fatal编程技术网

OpenCV未定义引用

OpenCV未定义引用,opencv,opencv4android,opencv3.0,Opencv,Opencv4android,Opencv3.0,我使用OpenCV C++代码,这样我就可以改变一些代码,编译它并得到结果。问题是我能够在我的JNI接口函数中使用OpenCV C++的功能。在添加代码顶部的头之后,我能够使用这些函数。当我运行编译时,我得到了未定义的引用错误 我这样做是为了android编码 错误如下所示(少数错误): Volumes/MAC/Farrakh/Software Setups/android-ndk-r10c/toolschains/arm-linux-androideabi- 4.6/prebuild/darw

我使用OpenCV C++代码,这样我就可以改变一些代码,编译它并得到结果。问题是我能够在我的JNI接口函数中使用OpenCV C++的功能。在添加代码顶部的头之后,我能够使用这些函数。当我运行编译时,我得到了未定义的引用错误

我这样做是为了android编码

错误如下所示(少数错误):

Volumes/MAC/Farrakh/Software Setups/android-ndk-r10c/toolschains/arm-linux-androideabi-
4.6/prebuild/darwin-x86_64/bin/。/lib/gcc/arm-linux-androideabi/4.6/。/../../../../../../../../arm-linux-
androideabi/bin/ld:./obj/local/armeabi/objs/opencvtest/native.o:函数中
cv::Mat::release():jni/opencv2/core/Mat.hpp:366:错误:未定义对的引用
'cv::Mat::deallocate()'
/卷/MAC/Farrakh/软件设置/android-ndk-r10c/toolchains/arm linux AndroidABI-
4.6/prebuild/darwin-x86_64/bin/。/lib/gcc/arm-linux-androideabi/4.6/。/../../../../../../../../arm-linux-
androideabi/bin/ld:./obj/local/armeabi/objs/opencvtest/native.o:函数中
Java_com_whizpool_opencvtest_main activity_imread_11:jni/native.cpp:14:错误:未定义引用
到'cv::imread(std::basic_string const&,
int)'
/卷/MAC/Farrakh/软件设置/android-ndk-r10c/toolchains/arm linux AndroidABI-
4.6/prebuild/darwin-x86_64/bin/。/lib/gcc/arm-linux-androideabi/4.6/。/../../../../../../../../arm-linux-
androideabi/bin/ld:./obj/local/armeabi/objs/opencvtest/native.o:函数中
Java_com_whizpool_opencvtest_main activity_imread_11:jni/opencv2/core/mat.hpp:277:错误:
对“cv::fastFree(void*)”的未定义引用
collect2:ld返回了1个退出状态
make:**[obj/local/armeabi/libopencvtest.so]错误1
我尝试了很多从谷歌得到的东西,但没有得到任何结果

下面是用于调用OpenCV C++代码的JNI代码。

#include "com_whizpool_opencvtest_MainActivity.h"

#include <opencv/cv.h>
#include <opencv/highgui.h>

using namespace cv;

extern "C"
{
JNIEXPORT jlong JNICALL Java_com_whizpool_opencvtest_MainActivity_imread_11(JNIEnv *env, jclass obj, jstring string)
{
    const char *w_buf = env->GetStringUTFChars(string, 0);

    Mat imgMat = imread("abc", 0);

    return 0;
}
}
#包括“com_whizpool_opencvtest_main activity.h”
#包括
#包括
使用名称空间cv;
外部“C”
{
JNIEXPORT jlong JNICALL Java_com_whizpool_opencvtest_main activity_imread_11(JNIEnv*env,jclass obj,jstring string)
{
const char*w_buf=env->GetStringUTFChars(字符串,0);
Mat imgMat=imread(“abc”,0);
返回0;
}
}

您的错误是链接器错误;您需要告诉链接器链接opencv_core和opencv_highgui。您可以在makefile或为您创建makefile的构建系统(如果有)中执行此操作

#include "com_whizpool_opencvtest_MainActivity.h"

#include <opencv/cv.h>
#include <opencv/highgui.h>

using namespace cv;

extern "C"
{
JNIEXPORT jlong JNICALL Java_com_whizpool_opencvtest_MainActivity_imread_11(JNIEnv *env, jclass obj, jstring string)
{
    const char *w_buf = env->GetStringUTFChars(string, 0);

    Mat imgMat = imread("abc", 0);

    return 0;
}
}