【Clion-Ubuntu-dlib】運行一個dlib案例(一)(如何在clion編譯器中配置CMakeLists)

目錄

 

第一步:新建一個dlib項目

第二步:運行一個案例hello world

第四步:main寫完整

第五步:編譯運行

第六步:其他問題

第七步:更多問題有待補充


第一步:新建一個dlib項目

第二步:運行一個案例hello world

第三步:配置CMakeList

cmake_minimum_required(VERSION 2.8)
project(cpp_eval)

set(CMAKE_CXX_STANDARD 11)

add_executable(cpp_eval main.cpp)

set(pathToDlib /media/luckynote/Tool/face-recognition/dlib-19.15.99/)

include(${pathToDlib}/dlib/cmake)

target_link_libraries(cpp_eval dlib::dlib)

第四步:main寫完整

說明:這裏筆者只導入dlib的頭文件進行編譯,如果不報錯誤,則說明dlib就可以正常進行編譯運行了。

#include <iostream> 
#include <dlib/image_processing.h> 
using namespace dlib; 
int main() 
{ 
    std::cout << "Hello, World!" << std::endl; 
    return 0; 
}

第五步:編譯運行

第六步:其他問題

若CMakeList配置有問題,如忘記 include(${pathToDlib}/dlib/cmake) 和 target_link_libraries(cpp_eval dlib::dlib) ,則會報出如下錯誤。

CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘__static_initialization_and_destruction_0(int, int)’中:
/usr/local/include/dlib/test_for_odr_violations.h:24:對‘USER_ERROR__inconsistent_build_configuration__see_dlib_faq_1_’未定義的引用
/usr/local/include/dlib/test_for_odr_violations.h:51:對‘DLIB_VERSION_MISMATCH_CHECK__EXPECTED_VERSION_19_15_99’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘dlib::lapack::binding::gesdd(char, int, int, double*, int, double*, double*, int, double*, int, double*, int, int*)’中:
/usr/local/include/dlib/matrix/lapack/gesdd.h:38:對‘dgesdd_’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘dlib::lapack::binding::gesvd(char, char, int, int, double*, int, double*, double*, int, double*, int, double*, int)’中:
/usr/local/include/dlib/matrix/lapack/gesvd.h:38:對‘dgesvd_’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘dlib::blas_bindings::cblas_gemm(dlib::blas_bindings::CBLAS_ORDER, dlib::blas_bindings::CBLAS_TRANSPOSE, dlib::blas_bindings::CBLAS_TRANSPOSE, int, int, int, double, double const*, int, double const*, int, double, double*, int)’中:
/usr/local/include/dlib/matrix/matrix_blas_bindings.h:219:對‘cblas_dgemm’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘dlib::locally_change_current_dir::locally_change_current_dir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’中:
/usr/local/include/dlib/misc_api/misc_api_shared.h:22:對‘dlib::get_current_dir[abi:cxx11]()’未定義的引用
/usr/local/include/dlib/misc_api/misc_api_shared.h:23:對‘dlib::set_current_dir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘dlib::locally_change_current_dir::revert()’中:
/usr/local/include/dlib/misc_api/misc_api_shared.h:42:對‘dlib::set_current_dir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘dlib::file::file(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’中:
/usr/local/include/dlib/dir_nav/dir_nav_kernel_2.h:104:對‘dlib::file::init(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘std::vector<std::vector<dlib::rectangle, std::allocator<dlib::rectangle> >, std::allocator<std::vector<dlib::rectangle, std::allocator<dlib::rectangle> > > > dlib::load_image_dataset<dlib::array<dlib::array2d<unsigned char, dlib::memory_manager_stateless_kernel_1<char> >, dlib::memory_manager_stateless_kernel_1<char> > >(dlib::array<dlib::array2d<unsigned char, dlib::memory_manager_stateless_kernel_1<char> >, dlib::memory_manager_stateless_kernel_1<char> >&, std::vector<std::vector<dlib::full_object_detection, std::allocator<dlib::full_object_detection> >, std::allocator<std::vector<dlib::full_object_detection, std::allocator<dlib::full_object_detection> > > >&, dlib::image_dataset_file const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)’中:
/usr/local/include/dlib/data_io/load_image_dataset.h:354:對‘dlib::image_dataset_metadata::load_image_dataset_metadata(dlib::image_dataset_metadata::dataset&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’未定義的引用
/usr/local/include/dlib/data_io/load_image_dataset.h:359:對‘dlib::get_parent_directory(dlib::file const&)’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘void dlib::load_png<dlib::array2d<unsigned char, dlib::memory_manager_stateless_kernel_1<char> > >(dlib::array2d<unsigned char, dlib::memory_manager_stateless_kernel_1<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’中:
/usr/local/include/dlib/image_loader/png_loader.h:211:對‘dlib::png_loader::png_loader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:211:對‘dlib::png_loader::~png_loader()’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:211:對‘dlib::png_loader::~png_loader()’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘void dlib::load_jpeg<dlib::array2d<unsigned char, dlib::memory_manager_stateless_kernel_1<char> > >(dlib::array2d<unsigned char, dlib::memory_manager_stateless_kernel_1<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’中:
/usr/local/include/dlib/image_loader/jpeg_loader.h:96:對‘dlib::jpeg_loader::jpeg_loader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘void dlib::load_dng<dlib::array2d<unsigned char, dlib::memory_manager_stateless_kernel_1<char> > >(dlib::array2d<unsigned char, dlib::memory_manager_stateless_kernel_1<char> >&, std::istream&)’中:
/usr/local/include/dlib/image_loader/image_loader.h:580:對‘dlib::entropy_decoder_kernel_2::entropy_decoder_kernel_2()’未定義的引用
/usr/local/include/dlib/image_loader/image_loader.h:581:對‘dlib::entropy_decoder_kernel_2::set_stream(std::istream&)’未定義的引用
/usr/local/include/dlib/image_loader/image_loader.h:580:對‘dlib::entropy_decoder_kernel_2::~entropy_decoder_kernel_2()’未定義的引用
/usr/local/include/dlib/image_loader/image_loader.h:766:對‘dlib::entropy_decoder_kernel_2::entropy_decoder_kernel_2()’未定義的引用
/usr/local/include/dlib/image_loader/image_loader.h:767:對‘dlib::entropy_decoder_kernel_2::set_stream(std::istream&)’未定義的引用
/usr/local/include/dlib/image_loader/image_loader.h:766:對‘dlib::entropy_decoder_kernel_2::~entropy_decoder_kernel_2()’未定義的引用
/usr/local/include/dlib/image_loader/image_loader.h:580:對‘dlib::entropy_decoder_kernel_2::~entropy_decoder_kernel_2()’未定義的引用
/usr/local/include/dlib/image_loader/image_loader.h:766:對‘dlib::entropy_decoder_kernel_2::~entropy_decoder_kernel_2()’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘void dlib::png_loader::get_image<dlib::array2d<unsigned char, dlib::memory_manager_stateless_kernel_1<char> > >(dlib::array2d<unsigned char, dlib::memory_manager_stateless_kernel_1<char> >&) const’中:
/usr/local/include/dlib/image_loader/png_loader.h:52:對‘dlib::png_loader::is_gray() const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:56:對‘dlib::png_loader::get_row(unsigned int) const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:64:對‘dlib::png_loader::is_gray() const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:68:對‘dlib::png_loader::get_row(unsigned int) const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:76:對‘dlib::png_loader::is_graya() const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:80:對‘dlib::png_loader::get_row(unsigned int) const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:99:對‘dlib::png_loader::is_graya() const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:103:對‘dlib::png_loader::get_row(unsigned int) const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:122:對‘dlib::png_loader::is_rgb() const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:126:對‘dlib::png_loader::get_row(unsigned int) const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:137:對‘dlib::png_loader::is_rgb() const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:141:對‘dlib::png_loader::get_row(unsigned int) const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:152:對‘dlib::png_loader::is_rgba() const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:159:對‘dlib::png_loader::get_row(unsigned int) const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:171:對‘dlib::png_loader::is_rgba() const’未定義的引用
/usr/local/include/dlib/image_loader/png_loader.h:178:對‘dlib::png_loader::get_row(unsigned int) const’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘void dlib::jpeg_loader::get_image<dlib::array2d<unsigned char, dlib::memory_manager_stateless_kernel_1<char> > >(dlib::array2d<unsigned char, dlib::memory_manager_stateless_kernel_1<char> >&) const’中:
/usr/local/include/dlib/image_loader/jpeg_loader.h:48:對‘dlib::jpeg_loader::is_gray() const’未定義的引用
/usr/local/include/dlib/image_loader/jpeg_loader.h:53:對‘dlib::jpeg_loader::is_rgba() const’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘dlib::entropy_decoder_model_kernel_5<256ul, dlib::entropy_decoder_kernel_2, 200000ul, 4ul>::decode(unsigned long&)’中:
/usr/local/include/dlib/entropy_decoder_model/entropy_decoder_model_kernel_5.h:422:對‘dlib::entropy_decoder_kernel_2::get_target(unsigned int)’未定義的引用
/usr/local/include/dlib/entropy_decoder_model/entropy_decoder_model_kernel_5.h:456:對‘dlib::entropy_decoder_kernel_2::decode(unsigned int, unsigned int)’未定義的引用
/usr/local/include/dlib/entropy_decoder_model/entropy_decoder_model_kernel_5.h:503:對‘dlib::entropy_decoder_kernel_2::decode(unsigned int, unsigned int)’未定義的引用
/usr/local/include/dlib/entropy_decoder_model/entropy_decoder_model_kernel_5.h:551:對‘dlib::entropy_decoder_kernel_2::get_target(unsigned int)’未定義的引用
/usr/local/include/dlib/entropy_decoder_model/entropy_decoder_model_kernel_5.h:553:對‘dlib::entropy_decoder_kernel_2::decode(unsigned int, unsigned int)’未定義的引用
CMakeFiles/cpp_eval.dir/main.cpp.o:在函數‘dlib::entropy_decoder_model_kernel_4<256ul, dlib::entropy_decoder_kernel_2, 200000ul, 4ul>::decode(unsigned long&)’中:
/usr/local/include/dlib/entropy_decoder_model/entropy_decoder_model_kernel_4.h:348:對‘dlib::entropy_decoder_kernel_2::get_target(unsigned int)’未定義的引用
/usr/local/include/dlib/entropy_decoder_model/entropy_decoder_model_kernel_4.h:376:對‘dlib::entropy_decoder_kernel_2::decode(unsigned int, unsigned int)’未定義的引用
/usr/local/include/dlib/entropy_decoder_model/entropy_decoder_model_kernel_4.h:422:對‘dlib::entropy_decoder_kernel_2::decode(unsigned int, unsigned int)’未定義的引用
/usr/local/include/dlib/entropy_decoder_model/entropy_decoder_model_kernel_4.h:469:對‘dlib::entropy_decoder_kernel_2::get_target(unsigned int)’未定義的引用
/usr/local/include/dlib/entropy_decoder_model/entropy_decoder_model_kernel_4.h:471:對‘dlib::entropy_decoder_kernel_2::decode(unsigned int, unsigned int)’未定義的引用
collect2: error: ld returned 1 exit status
CMakeFiles/cpp_eval.dir/build.make:83: recipe for target 'cpp_eval' failed
make[3]: *** [cpp_eval] Error 1
CMakeFiles/Makefile2:72: recipe for target 'CMakeFiles/cpp_eval.dir/all' failed
make[2]: *** [CMakeFiles/cpp_eval.dir/all] Error 2
CMakeFiles/Makefile2:84: recipe for target 'CMakeFiles/cpp_eval.dir/rule' failed
make[1]: *** [CMakeFiles/cpp_eval.dir/rule] Error 2
Makefile:118: recipe for target 'cpp_eval' failed
make: *** [cpp_eval] Error 2

第七步:更多問題有待補充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章