gpt4 book ai didi

java - 通过 JNI 执行 OpenCV native 函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:01:13 26 4
gpt4 key购买 nike

我正在尝试通过 Ubuntu 上的 Java native 接口(interface)运行 native OpenCV 函数。最终我想要完成的是使用默认版本的 OpenCV 中可用的 bagofwords 函数,但目前我正在尝试使用此接口(interface)测试运行简单的函数。

因此,我有以下具有相关 native 函数的 Java 文件。

class OpenCVSample {

static {
System.loadLibrary("Bridge1");
}

public native int BridgeFunction();

public static void main(String[] args) {
OpenCVSample b = new OpenCVSample();
b.BridgeFunction();
}

}

这是我的 C++ Bridge 文件。

#include "OpenCVSample.h"
#include <string.h>
#include <cv.h>

JNIEXPORT jint JNICALL Java_OpenCVSample_BridgeFunction(JNIEnv *env, jobject obj) {
IplImage *img = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 );
return 1;
}
int main(){}

现在正如我提到的,我在 Ubuntu 上执行此操作,因此我首先使用以下命令将 OpenCV 编译到带有 jdk 和 gcc 的共享库中。

g++ -shared -o libBridge1.so Bridge1.cpp -fPIC -I/usr/lib/jvm/java-1.7.0-openjdk-amd64/include -I/usr/lib/jvm/java-1.7.0-openjdk-amd64/include/linux -I/var/opencv/opencv/include/opencv 
-I/var/opencv/opencv/modules/core/include
-I/var/opencv/opencv/modules/imgproc/include
-I/var/opencv/opencv/modules/features2d/include
-I/var/opencv/opencv/modules/flann/include
-I/var/opencv/opencv/modules/calib3d/include
-I/var/opencv/opencv/modules/objdetect/include
-I/var/opencv/opencv/modules/legacy/include
-I/var/opencv/opencv/modules/highgui/include

然后创建一个名为 libBridge1.so 的共享库。现在,当我尝试运行 Java 文件本身时,出现了以下错误。

java: symbol lookup error: /var/tests/oc/libBridge1.so: undefined symbol: cvCreateImage

我对此进行了相当多的调查,几乎可以肯定我正在正确创建共享库,所以不明白为什么会出现此错误,有人可以解释一下吗?

------------------------------------编辑--------------------------------

感谢用户 Andrew Henle 和 James Black 的建议。我已经使用以下命令链接了相应的库。

g++ -shared -o libBridge1.so OpenCVSample.cpp -fPIC -I/usr/lib/jvm/java-1.7.0-openjdk-amd64/include -I/usr/lib/jvm/java-1.7.0-openjdk-amd64/include/linux -I/var/opencv/opencv/include -I/var/opencv/opencv/include/opencv -I/var/opencv/opencv/modules/core/include -I/var/opencv/opencv/modules/imgproc/include -I/var/opencv/opencv/modules/photo/include -I/var/opencv/opencv/modules/objdetect/include -L/var/opencv/opencv/build/lib -lopencv_core -L/var/opencv/opencv/build/lib -lopencv_imgproc -L/var/opencv/opencv/build/lib -lopencv_highgui -L/var/opencv/opencv/build/lib -lopencv_objdetect -L/var/opencv/opencv/build/lib -lopencv_features2d -L/var/opencv/opencv/build/lib -lopencv_video -L/var/opencv/opencv/build/lib -lopencv_core249

库似乎可以编译,但现在的问题似乎是它充满了 undefined reference 。在 libBridge1.so 上运行 ld 命令时,出现以下错误流。

ld: warning: cannot find entry symbol _start; not setting start address
libBridge1.so: undefined reference to `ippicviMirror_32s_C4R'
libBridge1.so: undefined reference to `ippicviTranspose_8u_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_16u_C4R'
libBridge1.so: undefined reference to `ippicviSub_8u_C1RSfs'
libBridge1.so: undefined reference to `ippicviTranspose_32s_C1IR'
libBridge1.so: undefined reference to `ippicviSum_32f_C3R'
libBridge1.so: undefined reference to `pthread_mutex_trylock'
libBridge1.so: undefined reference to `ippicviMean_16u_C1MR'
libBridge1.so: undefined reference to `ippicviTranspose_16s_C3R'
libBridge1.so: undefined reference to `ippicviNorm_L2_16s_C3R'
libBridge1.so: undefined reference to `ippicviXor_8u_C1R'
libBridge1.so: undefined reference to `ippicviMirror_8u_C4R'
libBridge1.so: undefined reference to `ippicviNorm_Inf_16u_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_16u_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_16u_C3CMR'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_32f_C3R'
libBridge1.so: undefined reference to `ippicviNorm_L2_32f_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_16s_C3R'
libBridge1.so: undefined reference to `ippicviNorm_L1_8s_C1MR'
libBridge1.so: undefined reference to `ippicviSet_16u_C3MR'
libBridge1.so: undefined reference to `gzeof'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_32f_C1MR'
libBridge1.so: undefined reference to `ippicviTranspose_16u_C3IR'
libBridge1.so: undefined reference to `ippicviSum_16u_C4R'
libBridge1.so: undefined reference to `ippicviAbsDiff_8u_C1R'
libBridge1.so: undefined reference to `ippicviNormRel_L2_8u_C1MR'
libBridge1.so: undefined reference to `ippicviAbsDiff_16u_C1R'
libBridge1.so: undefined reference to `ippicvsMinEvery_16u'
libBridge1.so: undefined reference to `ippicvMalloc'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_32f_C1MR'
libBridge1.so: undefined reference to `ippicviMirror_16u_C3IR'
libBridge1.so: undefined reference to `ippicviConvert_8s32f_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_16s_C4R'
libBridge1.so: undefined reference to `ippicvsFlip_32f_I'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_16u_C3R'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_8u_C3CMR'
libBridge1.so: undefined reference to `ippicviTranspose_16u_C1IR'
libBridge1.so: undefined reference to `ippicviSub_16u_C1RSfs'
libBridge1.so: undefined reference to `ippicviSet_16u_C4MR'
libBridge1.so: undefined reference to `ippicviTranspose_8u_C3IR'
libBridge1.so: undefined reference to `ippicviNorm_L1_16u_C3R'
libBridge1.so: undefined reference to `gzopen'
libBridge1.so: undefined reference to `ippicviTranspose_16u_C1R'
libBridge1.so: undefined reference to `ippicviMean_32f_C3CMR'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_32f_C1MR'
libBridge1.so: undefined reference to `pthread_mutexattr_settype'
libBridge1.so: undefined reference to `gzclose'
libBridge1.so: undefined reference to `ippicviNorm_L2_16u_C4R'
libBridge1.so: undefined reference to `ippicviCompare_16s_C1R'
libBridge1.so: undefined reference to `ippicviMax_8u_C1R'
libBridge1.so: undefined reference to `ippicviMean_16s_C3R'
libBridge1.so: undefined reference to `ippicviConvert_32f16u_C1RSfs'
libBridge1.so: undefined reference to `ippicviConvert_32s32f_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_8u_C1MR'
libBridge1.so: undefined reference to `ippicviMean_8u_C1R'
libBridge1.so: undefined reference to `ippicviMirror_16s_C3R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_32f_C4R'
libBridge1.so: undefined reference to `ippicviNormRel_L1_8u_C1MR'
libBridge1.so: undefined reference to `pthread_key_create'
libBridge1.so: undefined reference to `ippicviMirror_16u_C1IR'
libBridge1.so: undefined reference to `ippicviNormRel_L2_16u_C1R'
libBridge1.so: undefined reference to `gzrewind'
libBridge1.so: undefined reference to `ippicviMirror_32s_C1R'
libBridge1.so: undefined reference to `ippicviAdd_32f_C1R'
libBridge1.so: undefined reference to `ippicviNorm_L1_8u_C1MR'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_32f_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_8u_C4R'
libBridge1.so: undefined reference to `ippicviSum_8u_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_8s_C1MR'
libBridge1.so: undefined reference to `ippicviConvert_16u32s_C1R'
libBridge1.so: undefined reference to `ippicviNorm_L1_16s_C4R'
libBridge1.so: undefined reference to `ippicviConvert_16u8s_C1RSfs'
libBridge1.so: undefined reference to `ippicviMirror_16s_C4IR'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_16u_C3CMR'
libBridge1.so: undefined reference to `ippicviNormRel_L1_16u_C1MR'
libBridge1.so: undefined reference to `ippicviCompare_8u_C1R'
libBridge1.so: undefined reference to `ippicviMinMaxIndx_32f_C1MR'
libBridge1.so: undefined reference to `ippicviMirror_32f_C4IR'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_32f_C4R'
libBridge1.so: undefined reference to `ippicviSum_16s_C3R'
libBridge1.so: undefined reference to `ippicviMin_32f_C1R'
libBridge1.so: undefined reference to `ippicviNorm_L1_16s_C3R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_16s_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_32f_C1R'
libBridge1.so: undefined reference to `dlsym'
libBridge1.so: undefined reference to `ippicviNormRel_L2_16s_C1R'
libBridge1.so: undefined reference to `ippicviCopy_32s_C3MR'
libBridge1.so: undefined reference to `ippicviConvert_16u8u_C1R'
libBridge1.so: undefined reference to `ippicviSet_16s_C4MR'
libBridge1.so: undefined reference to `ippicviMax_16s_C1R'
libBridge1.so: undefined reference to `ippicviMinMaxIndx_8u_C1MR'
libBridge1.so: undefined reference to `pthread_once'
libBridge1.so: undefined reference to `ippicviNormRel_L2_8s_C1MR'
libBridge1.so: undefined reference to `ippicviNorm_L1_32f_C1MR'
libBridge1.so: undefined reference to `ippicviTranspose_8u_C4IR'
libBridge1.so: undefined reference to `ippicviConvert_16s32s_C1R'
libBridge1.so: undefined reference to `ippicviCopy_8u_C1R'
libBridge1.so: undefined reference to `ippicvsMinEvery_8u'
libBridge1.so: undefined reference to `ippicvsFlip_64f_I'
libBridge1.so: undefined reference to `ippicvsMaxEvery_32f'
libBridge1.so: undefined reference to `ippicviMirror_32f_C1R'
libBridge1.so: undefined reference to `ippicviNormRel_L1_16u_C1R'
libBridge1.so: undefined reference to `ippicviNormRel_L2_32f_C1MR'
libBridge1.so: undefined reference to `ippicviNorm_L1_16u_C4R'
libBridge1.so: undefined reference to `ippicviAdd_16u_C1RSfs'
libBridge1.so: undefined reference to `ippicviNorm_L2_16s_C4R'
libBridge1.so: undefined reference to `ippicviMean_8u_C1MR'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_16u_C3R'
libBridge1.so: undefined reference to `ippicviMul_16u_C1RSfs'
libBridge1.so: undefined reference to `ippicvsMaxEvery_64f'
libBridge1.so: undefined reference to `ippicviMirror_16u_C3R'
libBridge1.so: undefined reference to `ippicviTranspose_32s_C4IR'
libBridge1.so: undefined reference to `ippicviMirror_8u_C3IR'
libBridge1.so: undefined reference to `ippicviConvert_32s8u_C1R'
libBridge1.so: undefined reference to `ippicviTranspose_16s_C3IR'
libBridge1.so: undefined reference to `ippicviSum_8u_C3R'
libBridge1.so: undefined reference to `ippicviNorm_Inf_32f_C4R'
libBridge1.so: undefined reference to `ippicviTranspose_8u_C3R'
libBridge1.so: undefined reference to `ippicviMinMaxIndx_8s_C1MR'
libBridge1.so: undefined reference to `ippicviConvert_32s16u_C1RSfs'
libBridge1.so: undefined reference to `ippicviConvert_8s8u_C1Rs'
libBridge1.so: undefined reference to `ippicviNormRel_Inf_32f_C1MR'
libBridge1.so: undefined reference to `ippicviTranspose_8u_C1IR'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_8s_C3CMR'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_8u_C4R'
libBridge1.so: undefined reference to `ippicvsSortAscend_8u_I'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_16u_C1MR'
libBridge1.so: undefined reference to `ippicviConvert_32f32s_C1RSfs'
libBridge1.so: undefined reference to `ippicviTranspose_16s_C1R'
libBridge1.so: undefined reference to `ippicviCopy_32s_C4MR'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_8u_C3CMR'
libBridge1.so: undefined reference to `ippicviNorm_L2_16u_C3R'
libBridge1.so: undefined reference to `pthread_getspecific'
libBridge1.so: undefined reference to `ippicviSet_32s_C4MR'
libBridge1.so: undefined reference to `ippicviNorm_Inf_16u_C3R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_32f_C3R'
libBridge1.so: undefined reference to `ippicviTranspose_32s_C1R'
libBridge1.so: undefined reference to `ippicvInit'
libBridge1.so: undefined reference to `ippicviMean_8u_C3CMR'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_8u_C3R'
libBridge1.so: undefined reference to `ippicviNorm_L1_32f_C3R'
libBridge1.so: undefined reference to `pthread_mutexattr_destroy'
libBridge1.so: undefined reference to `ippicviNorm_Inf_8u_C4R'
libBridge1.so: undefined reference to `ippicviConvert_32s16s_C1RSfs'
libBridge1.so: undefined reference to `ippicviMul_16s_C1RSfs'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_8s_C1MR'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_16u_C4R'
libBridge1.so: undefined reference to `ippicviMean_StdDev_8u_C3CMR'
libBridge1.so: undefined reference to `ippicviMirror_32s_C4IR'
libBridge1.so: undefined reference to `ippicviCopy_16u_C1MR'
libBridge1.so: undefined reference to `ippicviMean_StdDev_16u_C1MR'
libBridge1.so: undefined reference to `ippicviNormRel_L1_32f_C1MR'
libBridge1.so: undefined reference to `ippicviConvert_32f8s_C1RSfs'
libBridge1.so: undefined reference to `ippicviSum_16u_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_8u_C1R'
libBridge1.so: undefined reference to `ippicviMirror_8u_C3R'
libBridge1.so: undefined reference to `ippicviNorm_L1_16u_C1R'
libBridge1.so: undefined reference to `ippicviMirror_32s_C1IR'
libBridge1.so: undefined reference to `ippicviMul_32f_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_16s_C4R'
libBridge1.so: undefined reference to `ippicviTranspose_32s_C4R'
libBridge1.so: undefined reference to `ippicviConvert_32s8s_C1R'
libBridge1.so: undefined reference to `ippicviTranspose_16u_C4R'
libBridge1.so: undefined reference to `ippicviNorm_L2_16u_C1MR'
libBridge1.so: undefined reference to `ippicviNorm_Inf_16s_C4R'
libBridge1.so: undefined reference to `ippicviTranspose_32f_C4IR'
libBridge1.so: undefined reference to `ippicviNorm_L2_8u_C3R'
libBridge1.so: undefined reference to `ippicviMean_16u_C4R'
libBridge1.so: undefined reference to `ippicviTranspose_16s_C4R'
libBridge1.so: undefined reference to `ippicviMean_32f_C1R'
libBridge1.so: undefined reference to `ippicviNot_8u_C1R'
libBridge1.so: undefined reference to `ippicviNorm_Inf_8u_C3R'
libBridge1.so: undefined reference to `ippicviNorm_L2_16s_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_16u_C1MR'
libBridge1.so: undefined reference to `ippicviLUTPalette_8u_C4R'
libBridge1.so: undefined reference to `ippicviMirror_16u_C4R'
libBridge1.so: undefined reference to `ippicviTranspose_32f_C1IR'
libBridge1.so: undefined reference to `ippicviNormRel_Inf_16s_C1R'
libBridge1.so: undefined reference to `ippicviMean_StdDev_16u_C3CMR'
libBridge1.so: undefined reference to `ippicviSub_16s_C1RSfs'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_8u_C1R'
libBridge1.so: undefined reference to `ippicviNorm_Inf_32f_C3R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_16u_C1MR'
libBridge1.so: undefined reference to `ippicviCopy_8u_C3MR'
libBridge1.so: undefined reference to `ippicviNorm_L1_32f_C1R'
libBridge1.so: undefined reference to `ippicviMirror_32s_C3R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_16u_C3R'
libBridge1.so: undefined reference to `ippicviMean_8u_C3R'
libBridge1.so: undefined reference to `pthread_mutexattr_init'
libBridge1.so: undefined reference to `ippicviNorm_Inf_16s_C1R'
libBridge1.so: undefined reference to `ippicviConvert_16s8s_C1RSfs'
libBridge1.so: undefined reference to `ippicviNormRel_Inf_32f_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_8s_C3CMR'
libBridge1.so: undefined reference to `ippicviNormRel_L2_16u_C1MR'
libBridge1.so: undefined reference to `ippicviMinMaxIndx_8s_C1R'
libBridge1.so: undefined reference to `ippicviNorm_L1_16s_C1R'
libBridge1.so: undefined reference to `ippicviMean_StdDev_8u_C3CR'
libBridge1.so: undefined reference to `ippicviSet_32f_C3MR'
libBridge1.so: undefined reference to `ippicviConvert_8s16s_C1R'
libBridge1.so: undefined reference to `ippicviAdd_8u_C1RSfs'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_32f_C3R'
libBridge1.so: undefined reference to `ippicviConvert_16u16s_C1RSfs'
libBridge1.so: undefined reference to `ippicviSet_16s_C3MR'
libBridge1.so: undefined reference to `ippicviTranspose_32f_C1R'
libBridge1.so: undefined reference to `ippicviSum_16u_C3R'
libBridge1.so: undefined reference to `ippicviMirror_16s_C3IR'
libBridge1.so: undefined reference to `ippicviNorm_Inf_8s_C1MR'
libBridge1.so: undefined reference to `ippicviConvert_8s16u_C1Rs'
libBridge1.so: undefined reference to `ippicviNorm_L2_32f_C3R'
libBridge1.so: undefined reference to `ippicviMean_16u_C1R'
libBridge1.so: undefined reference to `ippicviNorm_L1_8u_C3R'
libBridge1.so: undefined reference to `ippicviCopy_8u_C3P3R'
libBridge1.so: undefined reference to `ippicviCopy_16u_C3MR'
libBridge1.so: undefined reference to `ippicviNorm_L2_16u_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_8u_C3R'
libBridge1.so: undefined reference to `ippicviSum_8u_C4R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_16u_C1R'
libBridge1.so: undefined reference to `ippicviMean_32f_C1MR'
libBridge1.so: undefined reference to `ippicviTranspose_16s_C4IR'
libBridge1.so: undefined reference to `ippicviMirror_8u_C1IR'
libBridge1.so: undefined reference to `ippicviTranspose_32f_C4R'
libBridge1.so: undefined reference to `ippicviMean_StdDev_32f_C1MR'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_16s_C4R'
libBridge1.so: undefined reference to `ippicviNormRel_Inf_16u_C1R'
libBridge1.so: undefined reference to `ippicviSum_16s_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_16s_C3R'
libBridge1.so: undefined reference to `ippicviMean_16u_C3R'
libBridge1.so: undefined reference to `ippicviDotProd_16u64f_C1R'
libBridge1.so: undefined reference to `ippicviCompare_16u_C1R'
libBridge1.so: undefined reference to `ippicviMean_StdDev_16u_C3CR'
libBridge1.so: undefined reference to `ippicviNorm_L2_8u_C4R'
libBridge1.so: undefined reference to `ippicviMirror_8u_C4IR'
libBridge1.so: undefined reference to `ippicvsDotProd_64f'
libBridge1.so: undefined reference to `ippicviSet_32f_C4MR'
libBridge1.so: undefined reference to `ippicvsMinEvery_32f'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_32f_C3CMR'
libBridge1.so: undefined reference to `ippicviNorm_L2_8u_C1MR'
libBridge1.so: undefined reference to `ippicviNorm_Inf_16s_C3R'
libBridge1.so: undefined reference to `ippicviSum_32f_C4R'
libBridge1.so: undefined reference to `ippicviNormRel_L1_32f_C1R'
libBridge1.so: undefined reference to `ippicviTranspose_16u_C4IR'
libBridge1.so: undefined reference to `ippicviNorm_Inf_8u_C1MR'
libBridge1.so: undefined reference to `ippicviSub_32f_C1R'
libBridge1.so: undefined reference to `ippicviMax_16u_C1R'
libBridge1.so: undefined reference to `ippicviMean_StdDev_8u_C1MR'
libBridge1.so: undefined reference to `ippicviTranspose_32f_C3R'
libBridge1.so: undefined reference to `ippicviSum_32f_C1R'
libBridge1.so: undefined reference to `ippicviMinMaxIndx_8u_C1R'
libBridge1.so: undefined reference to `ippicviMin_16u_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_8s_C1MR'
libBridge1.so: undefined reference to `ippicviSet_32s_C3MR'
libBridge1.so: undefined reference to `ippicviNorm_L2_8s_C1MR'
libBridge1.so: undefined reference to `ippicviMax_32f_C1R'
libBridge1.so: undefined reference to `ippicviNorm_L2_32f_C1MR'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_16u_C4R'
libBridge1.so: undefined reference to `ippicviNorm_L1_16u_C1MR'
libBridge1.so: undefined reference to `ippicviNorm_L1_32f_C4R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_32f_C3CMR'
libBridge1.so: undefined reference to `ippicviCopy_8u_C4P4R'
libBridge1.so: undefined reference to `ippicvsMaxEvery_16u'
libBridge1.so: undefined reference to `ippicviNormRel_Inf_8s_C1MR'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_8u_C1R'
libBridge1.so: undefined reference to `ippicviTranspose_16s_C1IR'
libBridge1.so: undefined reference to `ippicviCopy_8u_C1MR'
libBridge1.so: undefined reference to `ippicviSet_32s_C1MR'
libBridge1.so: undefined reference to `ippicvsFlip_8u_I'
libBridge1.so: undefined reference to `ippicviConvert_8u32s_C1R'
libBridge1.so: undefined reference to `ippicviNormRel_Inf_8u_C1MR'
libBridge1.so: undefined reference to `ippicviTranspose_32s_C3R'
libBridge1.so: undefined reference to `ippicvsMinEvery_64f'
libBridge1.so: undefined reference to `ippicviTranspose_16u_C3R'
libBridge1.so: undefined reference to `ippicviConvert_8u16s_C1R'
libBridge1.so: undefined reference to `ippicviCopy_32s_C1MR'
libBridge1.so: undefined reference to `ippicviConvert_8u8s_C1RSfs'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_16s_C1R'
libBridge1.so: undefined reference to `ippicviDotProd_16s64f_C1R'
libBridge1.so: undefined reference to `ippicviSet_16s_C1MR'
libBridge1.so: undefined reference to `ippicviNorm_L1_8u_C1R'
libBridge1.so: undefined reference to `ippicviNorm_L2_32f_C4R'
libBridge1.so: undefined reference to `ippicviOr_8u_C1R'
libBridge1.so: undefined reference to `ippicviMirror_8u_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_8u_C3R'
libBridge1.so: undefined reference to `ippicviTranspose_32s_C3IR'
libBridge1.so: undefined reference to `ippicviMirror_16s_C1R'
libBridge1.so: undefined reference to `ippicviMean_16s_C4R'
libBridge1.so: undefined reference to `ippicviMean_16s_C1R'
libBridge1.so: undefined reference to `ippicviConvert_32f8u_C1RSfs'
libBridge1.so: undefined reference to `ippicviConvert_16s32f_C1R'
libBridge1.so: undefined reference to `ippicviMin_8u_C1R'
libBridge1.so: undefined reference to `ippicviNorm_L2_8u_C1R'
libBridge1.so: undefined reference to `ippicviLUTPalette_8u_C3R'
libBridge1.so: undefined reference to `gzgets'
libBridge1.so: undefined reference to `ippicviMirror_32f_C1IR'
libBridge1.so: undefined reference to `ippicviAdd_16s_C1RSfs'
libBridge1.so: undefined reference to `ippicviMean_StdDev_32f_C3CR'
libBridge1.so: undefined reference to `ippicviConvert_8u16u_C1R'
libBridge1.so: undefined reference to `ippicviMean_StdDev_32f_C3CMR'
libBridge1.so: undefined reference to `ippicviMirror_32f_C4R'
libBridge1.so: undefined reference to `ippicviNorm_Inf_8u_C1R'
libBridge1.so: undefined reference to `ippicviMul_8u_C1RSfs'
libBridge1.so: undefined reference to `ippicviTranspose_32f_C3IR'
libBridge1.so: undefined reference to `ippicviMin_16s_C1R'
libBridge1.so: undefined reference to `ippicviNormRel_L2_8u_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_32f_C4R'
libBridge1.so: undefined reference to `ippicviMirror_32s_C3IR'
libBridge1.so: undefined reference to `ippicviMirror_16s_C1IR'
libBridge1.so: undefined reference to `ippicviMean_8u_C4R'
libBridge1.so: undefined reference to `ippicviNormRel_Inf_8u_C1R'
libBridge1.so: undefined reference to `ippicviNorm_L1_8u_C4R'
libBridge1.so: undefined reference to `ippicviNormRel_Inf_16u_C1MR'
libBridge1.so: undefined reference to `ippicviNormRel_L1_8s_C1MR'
libBridge1.so: undefined reference to `ippicviMean_32f_C3R'
libBridge1.so: undefined reference to `ippicviMean_32f_C4R'
libBridge1.so: undefined reference to `ippicviMirror_32f_C3R'
libBridge1.so: undefined reference to `gzputs'
libBridge1.so: undefined reference to `ippicviMirror_32f_C3IR'
libBridge1.so: undefined reference to `ippicviAbsDiff_32f_C1R'
libBridge1.so: undefined reference to `ippicvsFlip_16u_I'
libBridge1.so: undefined reference to `ippicviNormRel_L1_16s_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_32f_C1R'
libBridge1.so: undefined reference to `ippicviConvert_16s16u_C1Rs'
libBridge1.so: undefined reference to `ippicvsDotProd_32f64f'
libBridge1.so: undefined reference to `ippicviMean_StdDev_8u_C1R'
libBridge1.so: undefined reference to `ippicviMirror_16u_C1R'
libBridge1.so: undefined reference to `ippicviMinMaxIndx_16u_C1MR'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_32f_C3CMR'
libBridge1.so: undefined reference to `ippicviConvert_16u32f_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_8u_C1MR'
libBridge1.so: undefined reference to `ippicvFree'
libBridge1.so: undefined reference to `ippicviNorm_Inf_32f_C1R'
libBridge1.so: undefined reference to `ippicviSet_32f_C1MR'
libBridge1.so: undefined reference to `ippicviMinMaxIndx_16u_C1R'
libBridge1.so: undefined reference to `ippicvsMaxEvery_8u'
libBridge1.so: undefined reference to `ippicviTranspose_8u_C4R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_16s_C3R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_8s_C3CMR'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_8u_C1MR'
libBridge1.so: undefined reference to `ippicviMinMaxIndx_32f_C1R'
libBridge1.so: undefined reference to `dlopen'
libBridge1.so: undefined reference to `ippicviMirror_16s_C4R'
libBridge1.so: undefined reference to `ippicviNormDiff_L2_8u_C4R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_8u_C3CMR'
libBridge1.so: undefined reference to `ippicviSum_16s_C4R'
libBridge1.so: undefined reference to `pthread_setspecific'
libBridge1.so: undefined reference to `ippicviMean_StdDev_16u_C1R'
libBridge1.so: undefined reference to `ippicviNormRel_L1_8u_C1R'
libBridge1.so: undefined reference to `ippicviMean_16u_C3CMR'
libBridge1.so: undefined reference to `ippicviCompare_32f_C1R'
libBridge1.so: undefined reference to `ippicviNorm_Inf_16u_C4R'
libBridge1.so: undefined reference to `ippicviNormRel_L2_32f_C1R'
libBridge1.so: undefined reference to `ippicviNorm_Inf_32f_C1MR'
libBridge1.so: undefined reference to `ippicviConvert_16s8u_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_Inf_16u_C1R'
libBridge1.so: undefined reference to `ippicviAnd_8u_C1R'
libBridge1.so: undefined reference to `ippicviConvert_8s32s_C1R'
libBridge1.so: undefined reference to `ippicviNormDiff_L1_16u_C3CMR'
libBridge1.so: undefined reference to `ippicviMean_StdDev_32f_C1R'
libBridge1.so: undefined reference to `ippicviConvert_8u32f_C1R'
libBridge1.so: undefined reference to `ippicviSet_16u_C1MR'
libBridge1.so: undefined reference to `ippicviDotProd_32s64f_C1R'
libBridge1.so: undefined reference to `ippicviMirror_16u_C4IR'
libBridge1.so: undefined reference to `ippicvsSortDescend_8u_I'

当运行 java 文件本身时,我现在遇到这个问题:

Exception in thread "main" java.lang.UnsatisfiedLinkError: /var/tests/oc/libBridge1.so: /var/tests/oc/libBridge1.so: undefined symbol: ippicviMinMaxIndx_16u_C1R
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1937)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1855)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at Bridge1.<clinit>(OpenCVSample.java:4)

--------------------------------编辑 2--------------------------------

经过一些进一步的修补,我发现了获取 undefined reference 的问题。我链接到错误的核心文件。然而,问题仍然存在,只是规模较小。这是我正在使用的以下命令:

 g++ -Wall -shared-libgcc -Im -o libBridge1.so Bridge1.cpp -fPIC -I/usr/lib/jvm/java-1.7.0-openjdk-amd64/include -I/usr/lib/jvm/java-1.7.0-openjdk-amd64/include/linux -I/var/opencv/opencv/include -I/var/opencv/opencv/include/opencv -I/var/opencv/opencv/modules/core/include -I/var/opencv/opencv/modules/imgproc/include -I/var/opencv/opencv/modules/photo/include -I/var/opencv/opencv/modules/objdetect/include -I/var/opencv/opencv/modules/imgcodecs/include -I/var/opencv/opencv/modules/videoio/include -I/var/opencv/opencv/modules/highgui/include  -L/var/opencv/opencv/build/lib -lopencv_core249 -L/var/opencv/opencv/build/lib -lopencv_features2d -L/var/opencv/opencv/build/lib -lopencv_imgproc -I/var/opencv/opencv/build/lib

在编译过程中我现在得到这个错误:

Bridge1.cpp: In function ‘jint Java_Bridge1_BridgeFunction(JNIEnv*, jobject)’:
Bridge1.cpp:8:12: warning: unused variable ‘img’ [-Wunused-variable]
IplImage *img = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 );
^
/tmp/ccqbVddx.o: In function `Java_Bridge1_BridgeFunction':
Bridge1.cpp:(.text+0x63): undefined reference to `cvCreateImage'
collect2: error: ld returned 1 exit status

最佳答案

您需要将您的共享库与所需的“-l...”选项链接起来,就好像您正在编译一个普通的 C/C++ 可执行文件来运行相同的功能一样。

如果执行“ldd libBridge1.so”,您应该会看到所需的库。如果您没有看到所需的库,则需要将它们添加到链接步骤。

关于java - 通过 JNI 执行 OpenCV native 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29551343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com