Ошибка связывания OpenCV только после использования -Wl, -rpath, / usr / local / MATLAB / R2014b / bin / glnxa64 для добавления кода Matkab

0

Мне удалось запустить пример на сайте openCV с изображением в eclipse (http://docs.opencv.org/doc/tutorials/introduction/linux_eclipse/linux_eclipse.html)

У меня есть другой проект, в котором я читаю некоторую матрицу из файла мата, когда я пытаюсь объединить эти два, чтобы показать изображения, прочитанные из файла мата, эти ошибки показаны:

19:09:59 **** Incremental Build of configuration Debug for project testMAT ****
make all 
Building file: ../src/testMAT.cpp
Invoking: GCC C++ Compiler
g++ -I/usr/local/MATLAB/R2014b/extern/include -I/usr/include/opencv -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/testMAT.d" -MT"src/testMAT.d" -o "src/testMAT.o" "../src/testMAT.cpp"
../src/testMAT.cpp: In function ‘int diagnose(const char*, const char*):
../src/testMAT.cpp:70:43: warning: format ‘%u expects argument of type ‘unsigned int, but argument 2 has type ‘long unsigned int [-Wformat=]
   printf("the size of c is %u\n", sizeof c);
                                           ^
../src/testMAT.cpp:78:10: warning: unused variable ‘mrows [-Wunused-variable]
   mwSize mrows = mxGetM(fPtr);
          ^
../src/testMAT.cpp:79:10: warning: unused variable ‘ncols [-Wunused-variable]
   mwSize ncols = mxGetN(fPtr);
          ^
../src/testMAT.cpp:38:16: warning: unused variable ‘dir [-Wunused-variable]
   const char **dir;
                ^
../src/testMAT.cpp:39:22: warning: unused variable ‘nome [-Wunused-variable]
   const char *name, *nome;
                      ^
../src/testMAT.cpp:40:9: warning: unused variable ‘ndir [-Wunused-variable]
   int   ndir;
         ^
../src/testMAT.cpp:41:9: warning: unused variable ‘i [-Wunused-variable]
   int   i;
         ^
../src/testMAT.cpp:57:10: warning: variable ‘nElements set but not used [-Wunused-but-set-variable]
   mwSize nElements;       /* number of elements in array */
          ^
../src/testMAT.cpp:60:11: warning: unused variable ‘realPtr [-Wunused-variable]
   double *realPtr;        /* pointer to data */
           ^
../src/testMAT.cpp:61:10: warning: variable ‘total set but not used [-Wunused-but-set-variable]
   double total;           /* value to calculate */
          ^
Finished building: ../src/testMAT.cpp

**Building target: testMAT
Invoking: GCC C++ Linker
g++  -Wl,-rpath,/usr/local/MATLAB/R2014b/bin/glnxa64 -L/usr/local/MATLAB/R2014b/bin/glnxa64 -L/usr/lib/x86_64-linux-gnu -o "testMAT"  ./src/testMAT.o   -leng -lmat -lmex -lut -lmx -lopencv_core -lopencv_imgproc -lopencv_highgui
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFReadRGBAStrip@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFIsTiled@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFWriteScanline@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFGetField@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFScanlineSize@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFReadEncodedTile@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFReadRGBATile@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFClose@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFRGBAImageOK@LIBTIFF_4.0'
makefile:45: recipe for target 'testMAT' failed
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFOpen@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFReadEncodedStrip@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFSetField@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFSetWarningHandler@LIBTIFF_4.0'
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to 'TIFFSetErrorHandler@LIBTIFF_4.0'
collect2: error: ld returned 1 exit status
make: *** [testMAT] Error 1 **

19:10:00 Build Finished (took 810ms)

эти ошибки отображаются даже на примере opencv, когда я добавляю только -Wl, - rpath,/usr/local/MATLAB/R2014b/bin/glnxa64, не добавляя никакого кода в исходный файл. Без флага все отлично работает.

Как включить код MATLAB в этот opencv-проект?

  • 1
    Похоже, у вас есть неопределенные ссылки на функции libtiff в opencv_highgui. Я думаю, что libtiff должен был быть предоставлен и собран с вашей сборкой OpenCV. Убедитесь, что он у вас есть и правильно ли он связан.
  • 0
    @ Наверное, я не понимаю, почему все это прекрасно работает без флага - Wl, и почему оно выдает эти ошибки вместе с флагом, rpath должен просто добавить каталог поиска для целей ссылки, а не нарушать существующие пути ссылки
Теги:
opencv

1 ответ

0

Эта тема старая, но у меня была такая же проблема, и я ее исправил.

Я попытался переустановить OpenCV, и я, наконец, обнаружил, что ccmake

BUILD_TIFF | OFF

является параметром defaut при установке OpenCV.

Поэтому я положил его на ON и переустановил OpenCV, и он работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню