Undefinierte Referenzen in statischen OpenCV-BibliothekenC++

Programme in C++. Entwicklerforum
Anonymous
 Undefinierte Referenzen in statischen OpenCV-Bibliotheken

Post by Anonymous »

Ich habe ein Projekt in C++, das OpenCV 3.1 verwendet und mit gemeinsam genutzten Bibliotheken gut funktioniert. Aber jetzt möchte ich es mit statischen Bibliotheken (die sich in einem Ordner im Projektverzeichnis befinden) kompilieren, weil ich es dort exportieren (und bei Bedarf auch bearbeiten und neu kompilieren) möchte, wo OpenCV nicht installiert ist.

Ich habe OpenCV dieses Mal neu kompiliert und die freigegebenen Bibliotheken auf NO:

gesetzt

Code: Select all

make -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=NO -DCMAKE_INSTALL_PREFIX=~/Desktop/ocv ..
Dann habe ich meine benötigten Bibliotheken genommen:

Code: Select all

libopencv_core.a   libopencv_imgproc.a    libopencv_highgui.a
libopencv_video.a  libopencv_imgcodecs.a  libopencv_videoio.a
und führte g++ a.cpp libopencv_core.a aus, wobei a.cpp ein Beispielprogramm ist, um zu testen, ob alles funktioniert:

Code: Select all

#include 
#include 

using namespace cv;
using namespace std;

int main()
{
Mat a;
printf("hello world\n" );
return 0;
}
Mein Problem ist, dass ich die erste Bibliothek (Kern) nicht verknüpfen kann, weil ich viele undefinierte Referenzen wie diese erhalte:

Code: Select all

libopencv_core.a(system.cpp.o): In function `cv::Mutex::Mutex()':
system.cpp:(.text._ZN2cv5MutexC2Ev+0x2c): undefined reference to `pthread_mutexattr_init'
system.cpp:(.text._ZN2cv5MutexC2Ev+0x39): undefined reference to `pthread_mutexattr_settype'
system.cpp:(.text._ZN2cv5MutexC2Ev+0x4c): undefined reference to `pthread_mutexattr_destroy'
libopencv_core.a(system.cpp.o): In function `cv::Mutex::trylock()':
system.cpp:(.text._ZN2cv5Mutex7trylockEv+0x8): undefined reference to `pthread_mutex_trylock'
libopencv_core.a(system.cpp.o): In function `cv::TlsAbstraction::TlsAbstraction()':
system.cpp:(.text._ZN2cv14TlsAbstractionC2Ev+0x9): undefined reference to `pthread_key_create'
libopencv_core.a(system.cpp.o): In function `cv::TlsAbstraction::~TlsAbstraction()':
und so weiter. Ich habe überall gesucht und kann nicht finden, was fehlt. Wir freuen uns über jede Hilfe.

p.s. G++- und Ubuntu-Version: g++ (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post