2015-04-10 3 views
2

Я пытаюсь запустить собственные функции OpenCV через интерфейс Java Native на Unbuntu. В конечном итоге то, что я пытаюсь сделать, это использовать функции bagofwords, доступные в стандартной версии OpenCV по умолчанию, но пока я пытаюсь проверить запущенные простые функции с помощью этого интерфейса.Проблема, выполняющая собственные функции OpenCV через JNI

Итак, у меня есть следующий файл 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

Я смотрел в это совсем немного, и я почти уверен, что я правильно создать общую библиотеку, так что не могу понять, почему я получаю эту ошибку, может кто-нибудь объяснить?

----------------------------------- EDIT --- --------------------------------

Спасибо пользователям 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. При запуске команды ld на libBridge1.so я получаю следующий поток ошибок.

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) 

---------------------- ----------- EDIT 2 ------------------------------- -

После некоторого дальнейшего измельчения я нашел проблему с получением неопределенного значения r eferences. Я связывался с неправильным файлом ядра. Однако проблема все еще сохраняется, только в меньших масштабах.Вот следующая команда Im помощью:

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 

ответ

2

Вы должны связать свой общий объект с нужными «-l ...» Параметры , так же, как если бы вы компилировали обычный исполняемый файл C/C++ для запуска этой же функции.

Вы должны увидеть библиотеки, необходимые, если вы выполните «ldd libBridge1.so». Если вы не видите необходимые библиотеки, вам нужно добавить их на шаг ссылки.

+0

Но это то, что я уже сделал, если вы посмотрите инструкцию компиляции, например: '-I/var/opencv/opencv/modules/core/include'. Кроме того, я запускал 'ldd' в библиотеке, он просто заявляет, что они« статически связаны » – Zy0n

+0

Это включают в себя каталоги, используя -I (верхний глаз), а не -l (нижний регистр ell). Вам нужно добавить ссылки на команду связи для общих объектов, которые необходимы вашим общим объектам для запуска - точно так же, как если бы это был исполняемый файл. "-L/path/to/libs -lsomelib ...". Когда это будет правильно, если вы выполните «ldd -r libBridge1.so», вы не увидите никаких ошибок. –

+0

-I сообщает компилятору, где ваши включенные, а не там, где нужны библиотеки для связи. ldd сообщит вам библиотеки, на которые вы ссылаетесь, но вы не связываетесь с ними. –

2

Я согласен с Эндрю Хени в отношении флага -l, так как мне любопытно, как компилируется ваша библиотека.

Но в вашем классе java вызовите System.loadLibrary(..), чтобы загрузить вашу библиотеку в первую очередь.

Тогда я ожидаю, что это не удастся, и с помощью команды ld будет полезно указать, что вам не хватает.

+0

Запуск 'ld' возвращает следующее. 'ld: warning: не удается найти символ входа _start; не устанавливать начальный адрес libBridge1.so: неопределенная ссылка на 'cvCreateImage ' ' – Zy0n

+0

И 'ldd' просто заявляет, что файл' статически связан' – Zy0n

+0

Привет, Джеймс, я обновил основной пост с обновленными результатами после ссылки на соответствующие библиотеки. – Zy0n