2
opencv C++ 코드를 사용하여 일부 코드를 변경하고 컴파일하여 결과를 얻을 수 있습니다. 문제는 JNI 인터페이스 함수에서 opencv C++의 함수를 사용할 수 있다는 것입니다. 코드의 맨 위에 헤더를 추가 한 후에 이러한 함수를 사용할 수 있습니다. 컴파일을 실행할 때 정의되지 않은 참조 오류가 발생합니다.OpenCV 정의되지 않은 참조
나는 안드로이드 코딩을하고있다.
오류
는 (몇몇 오류)를 아래에서 언급 :Volumes/MAC/Farrakh/Software-Setups/android-ndk-r10c/toolchains/arm-linux-androideabi-
4.6/prebuilt/darwin-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-
androideabi/bin/ld: ./obj/local/armeabi/objs/opencvtest/native.o: in function
cv::Mat::release():jni/opencv2/core/mat.hpp:366: error: undefined reference to
'cv::Mat::deallocate()'
/Volumes/MAC/Farrakh/Software-Setups/android-ndk-r10c/toolchains/arm-linux-androideabi-
4.6/prebuilt/darwin-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-
androideabi/bin/ld: ./obj/local/armeabi/objs/opencvtest/native.o: in function
Java_com_whizpool_opencvtest_MainActivity_imread_11:jni/native.cpp:14: error: undefined reference
to 'cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&,
int)'
/Volumes/MAC/Farrakh/Software-Setups/android-ndk-r10c/toolchains/arm-linux-androideabi-
4.6/prebuilt/darwin-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-
androideabi/bin/ld: ./obj/local/armeabi/objs/opencvtest/native.o: in function
Java_com_whizpool_opencvtest_MainActivity_imread_11:jni/opencv2/core/mat.hpp:277: error:
undefined reference to 'cv::fastFree(void*)'
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi/libopencvtest.so] Error 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;
}
}