2016-10-07 11 views
0

OpenCV 3.1を使用し、共有ライブラリを使用して正常に動作するC++プロジェクトがあります。しかし、OpenCVがインストールされていない場所でエクスポートすることができます(必要に応じて編集や再コンパイルもできるようにしたいので、プロジェクトディレクトリ内のフォルダにある静的ライブラリを使用してコンパイルします)。静的OpenCVライブラリで未定義の参照

私は、この時間はNOに共有ライブラリを設定OpenCVのを再コンパイルしています

make -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=NO -DCMAKE_INSTALL_PREFIX=~/Desktop/ocv .. 

その後、私は私の必要なライブラリました:

libopencv_core.a libopencv_imgproc.a libopencv_highgui.a 
libopencv_video.a libopencv_imgcodecs.a libopencv_videoio.a 

をしてa.cppがすべてかどうかをテストするためのサンプルプログラムですg++ a.cpp libopencv_core.aを走りました作品:

#include <opencv2/opencv.hpp> 
#include <iostream> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    Mat a; 
    printf("hello world\n"); 
    return 0; 
} 

その上

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()': 

と:私はこのような未定義の参照の多くを得るので、私は最初のライブラリ(コア)をリンクすることができません。私は何度も捜し求めており、欠けているものを見つけることはできません。どんな助けでも大歓迎です。

p.s. G ++およびUbuntuバージョン:g++ (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4

答えて

1

pthreadライブラリもリンクする必要があります。そして、あなたが必要なコードが含まれている他のライブラリが不足している-pthread

g++ a.cpp libopencv_core.a -pthread 

としてそれを渡します。それはTHIRD_PARTY libsの間のどこかにあるべきippicv*機能

g++ a.cpp libopencv_core.a libippicv.a -pthread 

ためのコードが含まれていlibippicv.aがなければなりません。

+0

ありがとう、私はこれを見ていたが、私はまた、他のエラー: libopencv_core.a(system.cpp.o):関数 'cv :: ipp :: getIppFeatures() 'で: system.cpp :(.text._ZN2cv3ipp14getIppFeaturesEv + 0x19a):ippicvSetCpuFeatures 'への未定義参照 system.cpp :(text._ZN2cv3ipp14getIppFeaturesEv + 0x215)。ippicvInit'への未定義参照」G ++ a.cpp libopencv_core.a libopencv_imgproc実行後 – Leo

+0

残念ながら、同じ結果。 a libopencv_highgui.a -pthread – Leo

+0

@Leo libippicv.aという名前のライブラリはありませんか?エラーから、これは必要な機能を含むライブラリであるようです。 – user3286661

関連する問題