通过JNI执行OpenCV本机函数的问题

Issue executing OpenCV native functions via JNI

本文关键字:函数 问题 本机 OpenCV JNI 执行 通过      更新时间:2023-10-16

我正试图通过Ubuntu上的Java native Interface运行本机OpenCV函数。最终,我试图实现的是使用OpenCV默认版本中可用的bagofwords函数,但目前我正在尝试使用这个接口测试运行简单的函数。

因此,我有了下面的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上完成这项工作的,所以我首先用以下命令用gcc将OpenCV编译到一个带有jdk的共享库中。

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:符号查找错误:/var/tests/oc/libBridge1.so:未定义的符号: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 references填满了。当在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------------------------------

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

 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",您应该看到所需的库。如果没有看到所需库,则需要将它们添加到链接步骤中。

我同意Andrew Henie关于-l标志的观点,因为我很好奇您的库是如何编译的。

但是在java类中,首先调用System.loadLibrary(..)来加载库。

然后我预计它会失败,使用ld命令将有助于指出您缺少的内容。