2016-03-22 17 views
0

OpenCV (ve başarılı bir şekilde başarılı bir şekilde yaptığım) ile bağlantı kurmaya çalıştığım bir kütüphanem var. Sonra denemek ve bir yürütülebilir ekleyebilir ve kütüphane test etmek her şeyi birbirine bağlamak ve her Statik kütüphane olarak birleştirme kütüphanesi binlerce tanımlanmamış referans verir

In function `________________`: undefined reference to `________` 

bazı örnekler

diyerek 2000-3000 hataları olsun şunlardır:

/path/to/libs/libopencv_features2d.a(matchers.cpp.o): In function `cv::FlannBasedMatcher::read(cv::FileNode const&)': 
matchers.cpp:(.text._ZN2cv17FlannBasedMatcher4readERKNS_8FileNodeE+0x227): undefined reference to `cv::flann::IndexParams::setAlgorithm(int)' 

/path/to/libs/libopencv_videoio.a(cap_gstreamer.cpp.o)` In function `CvCapture_GStreamer::getProperty(int) const': 
cap_gstreamer.cpp:(.text._ZNK19CvCapture_GStreamer11getPropertyEi+0x8b): undefined reference to `gst_element_query_position' 

/path/to/lib/libopencv_core.a(stat.cpp.o): In function `cv::norm(cv::_InputArray const&, int, cv::_InputArray const&)': 
stat.cpp:(.text._ZN2cv4normERKNS_11_InputArrayEiS2_+0x1d27): undefined reference to `ippicviNorm_L1_32f_C1MR' 
stat.cpp:(.text._ZN2cv4normERKNS_11_InputArrayEiS2_+0x1dab): undefined reference to `ippicviNorm_L1_8u_C1MR' 

Benim cmake dosyası çalıştığı:

project(SDK-build) 
cmake_minimum_required(VERSION 2.8) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

set(MYLIB_SRC 
    file1.cpp 
    file2.cpp 
    file3.cpp 
) 

add_library(gesture SHARED ${MYLIB_SRC}) 

cmake_policy(SET CMP0015 NEW) 
link_directories(./opencvlib-wgstreamer) 
set(OPENCV_LIBS 
    libopencv_calib3d.a 
    libopencv_core.a 
    libopencv_features2d.a 
    libopencv_highgui.a 
    libopencv_imgcodecs.a 
    libopencv_imgproc.a 
    libopencv_ml.a 
    libopencv_objdetect.a 
    libopencv_photo.a 
    libopencv_video.a 
    libopencv_videoio.a 
) 

set(TEST_SRC 
    test.cpp 
) 

add_executable(gesture_test ${TEST_SRC}) 

#build library 
#target_link_libraries(gesture -Wl,-whole-archive ${OPENCV_LIBS} -Wl,--no-whole-archive) 

#build library with executable 
target_link_libraries(gesture_test gesture -Wl,-whole-archive ${OPENCV_LIBS} -Wl,--no-whole-archive) 

Ben ilk target_link_libraries kullandığınızda, her şey oluşturur ve make sorun yürütme vardır, ama ana dosyada (bağlantı sağlayan) masif karışıklığa neden olur. Herhangi bir öneri, kafamı bunun için saatlerce çalıştırıyorum. Ayrıca, her ikisi de WITH_IPP=ON, WITH_IPP=OFF ve WITH_GSTREAMER_ON

cevap

0

'u kullanarak derleme opencv'in çeşitli kombinasyonlarını denedim. Kitaplıkları doğru sırada belirtmeniz gerekir. Daha fazla bilgi için bkz. here. Sana sorunu çözmek için bir diğer olası yolu olduğuna inanıyoruz -Wl-tam arşiv kullandıklarını görmek

Düzenleme, belki ben

+0

Evet Düzenlemeniz doğru yanılıyorum. Şimdiye kadar '-lpthread' ile bağlantı kurmam gerektiğini öğrendim, 'libopencv_flann' hakkında unuttum ve -Wl, - no-as-need 'önce, $ {OpenCV_LIBS} 'yi ekledim – wprins

İlgili konular