Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对'cv::xfeatures2d::SURF::create(double,int,int,bool,bool)和#x27;运行时 我正在使用QT创建者在英伟达Jexon Nano(Ubuntu 18.04 LTS)上创建一个应用程序。为此,我创建了自己的库(名为recolib),它使用opencv(版本3.4.6),然后在我的Qt应用程序项目中包括我的库_Opencv_Cmake_Surf_Nvidia Jetson Nano - Fatal编程技术网

对'cv::xfeatures2d::SURF::create(double,int,int,bool,bool)和#x27;运行时 我正在使用QT创建者在英伟达Jexon Nano(Ubuntu 18.04 LTS)上创建一个应用程序。为此,我创建了自己的库(名为recolib),它使用opencv(版本3.4.6),然后在我的Qt应用程序项目中包括我的库

对'cv::xfeatures2d::SURF::create(double,int,int,bool,bool)和#x27;运行时 我正在使用QT创建者在英伟达Jexon Nano(Ubuntu 18.04 LTS)上创建一个应用程序。为此,我创建了自己的库(名为recolib),它使用opencv(版本3.4.6),然后在我的Qt应用程序项目中包括我的库,opencv,cmake,surf,nvidia-jetson-nano,Opencv,Cmake,Surf,Nvidia Jetson Nano,该库编译得很好,但当我尝试编译应用程序时,它达到了100%,然后出现以下错误:未定义对“cv::xfeatures2d::SURF::create(double,int,int,bool,bool)”的引用 请注意,调用此函数的类是我的库“recolib”的一部分 我用cmake构建了opencv,启用了非免费模块,并给出了正确的路径,opencv构建和安装都很好 此外,该应用程序在mac和ubuntu虚拟机上运行良好 以下是应用程序的Cmakelist.txt示例: cmake_minimum

该库编译得很好,但当我尝试编译应用程序时,它达到了100%,然后出现以下错误:未定义对“cv::xfeatures2d::SURF::create(double,int,int,bool,bool)”的引用

请注意,调用此函数的类是我的库“recolib”的一部分

我用cmake构建了opencv,启用了非免费模块,并给出了正确的路径,opencv构建和安装都很好

此外,该应用程序在mac和ubuntu虚拟机上运行良好

以下是应用程序的Cmakelist.txt示例:

cmake_minimum_required(VERSION 3.0)

# Add folder where are supportive functions
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -std=c++11 -pthread -lm")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=c++11 -pthread -lm")

...

find_package(OpenCV REQUIRED)

if(OPENCV_XFEATURES2D_FOUND)
    message("xfeatures2d found")
endif()

...

SET(RECOLIB_DIR "${PROJECT_SOURCE_DIR}/libs/recotracking-recolib")

include_directories("${RECOLIB_DIR}/include")
if(WIN32)
    link_directories("${RECOLIB_DIR}/build/Debug")
else()
    link_directories("${RECOLIB_DIR}/build/")
endif()

SET(RECOLIB_LIBRARY recolib)

include_directories(${OPENCV_INCLUDE_DIRS})

...

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)

FILE(GLOB_RECURSE RES_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.qrc")
FILE(GLOB_RECURSE SRC_FILES "${SRC_FOLDER}/*.cpp")
FILE(GLOB_RECURSE UI_FILES "${SRC_FOLDER}/*.ui")
FILE(GLOB_RECURSE HDR_FILES "${HDR_FOLDER}/*.h")

link_directories(${OpenCV_LIBRARY_DIRS})
message("opencv libs: ${OpenCV_LIBRARIES}")
add_executable(${execName}  ${OS_BUNDLE}# Expands to WIN32 or MACOS_BUNDLE depending on OS
    ${RES_FILES} ${SRC_FILES} ${UI_FILES} ${HDR_FILES} ${META_FILES_TO_INCLUDE}
)

...

# Add the Qt5 Widgets for linking
if (APPLE)
    target_link_libraries(${execName}
        ${OpenCV_LIBRARIES}
        ${AppKit}
        ${CoreAudio}
        ${AudioToolbox}
        Qt5::Core
        Qt5::Gui
        Qt5::QuickControls2
        Qt5::MultimediaWidgets
        Qt5::Multimedia
        Qt5::MultimediaPrivate
        Qt5::Widgets
        Qt5::Sql
        ${RECOLIB_LIBRARY})
else()
    target_link_libraries(${execName}
        ${OpenCV_LIBRARIES}
        Qt5::Core
        Qt5::Gui
        Qt5::QuickControls2
        Qt5::MultimediaWidgets
        Qt5::Multimedia
        #Qt5::MultimediaPrivate
        Qt5::Widgets
        Qt5::Sql
        ${RECOLIB_LIBRARY})
endif()
在Qt creator下执行它得到的输出如下:

Running "/usr/bin/cmake -E server --pipe=/tmp/cmake-Bg9h0e/socket --experimental" in /home/bookbeo-novatech/build-recotracking-app-Desktop-Release.
Starting to parse CMake project, using: "-DCMAKE_BUILD_TYPE:STRING=Release", "-DCMAKE_CXX_COMPILER:STRING=/usr/bin/g++", "-DCMAKE_C_COMPILER:STRING=/usr/bin/gcc", "-DCMAKE_PREFIX_PATH:STRING=/usr", "-DQT_QMAKE_EXECUTABLE:STRING=/usr/lib/qt5/bin/qmake".
-std=c++11 -pthread -lm
The C compiler identification is GNU 7.4.0
The CXX compiler identification is GNU 7.4.0
Check for working C compiler: /usr/bin/gcc
Check for working C compiler: /usr/bin/gcc -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Detecting C compile features
Detecting C compile features - done
Check for working CXX compiler: /usr/bin/g++
Check for working CXX compiler: /usr/bin/g++ -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features - done
Looking for pthread.h
Looking for pthread.h - found
Looking for pthread_create
Looking for pthread_create - not found
Looking for pthread_create in pthreads
Looking for pthread_create in pthreads - not found
Looking for pthread_create in pthread
Looking for pthread_create in pthread - found
Found Threads: TRUE 
Found CUDA: /usr/local/cuda (found suitable exact version "10.0") 
Found OpenCV: /usr/local (found version "3.4.6") 
xfeatures2d found
opencv libs: opencv_calib3d;opencv_core;opencv_cudaarithm;opencv_cudabgsegm;opencv_cudacodec;opencv_cudafeatures2d;opencv_cudafilters;opencv_cudaimgproc;opencv_cudalegacy;opencv_cudaobjdetect;opencv_cudaoptflow;opencv_cudastereo;opencv_cudawarping;opencv_cudev;opencv_dnn;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_shape;opencv_stitching;opencv_superres;opencv_video;opencv_videoio;opencv_videostab;opencv_aruco;opencv_bgsegm;opencv_bioinspired;opencv_ccalib;opencv_cvv;opencv_datasets;opencv_dnn_objdetect;opencv_dpm;opencv_face;opencv_fuzzy;opencv_hfs;opencv_img_hash;opencv_line_descriptor;opencv_optflow;opencv_phase_unwrapping;opencv_plot;opencv_reg;opencv_rgbd;opencv_saliency;opencv_stereo;opencv_structured_light;opencv_surface_matching;opencv_text;opencv_tracking;opencv_xfeatures2d;opencv_ximgproc;opencv_xobjdetect;opencv_xphoto
Configuring done
Generating done
CMake Warning:
Manually-specified variables were not used by the project:

QT_QMAKE_EXECUTABLE


CMake Project was parsed successfully.
因此,正如您所看到的,除了pthread的一些问题(但似乎与主要问题无关),cmake配置看起来不错。找到Opencv和xfeatures2d

但当我构建应用程序时,在编译结束时,我得到:

[ 94%] Building CXX object CMakeFiles/recotracking-app.dir/recotracking-app_autogen/mocs_compilation.cpp.o
[ 97%] Building CXX object CMakeFiles/recotracking-app.dir/recotracking-app_autogen/EWIEGA46WW/qrc_resources.cpp.o
[100%] Linking CXX executable recotracking-app
/home/bookbeo/recotracking-app/libs/recotracking-recolib/build/librecolib.a(PCB.cpp.o): In function `reco::PCB::load(cv::Mat const&, cv::Mat const&, cv::Mat const&, std::vector<reco::RecoPoi, std::allocator<reco::RecoPoi> >)':
CMakeFiles/recotracking-app.dir/build.make:1045: recipe for target 'recotracking-app' failed
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/recotracking-app.dir/all' failed
Makefile:83: recipe for target 'all' failed
/home/bookbeo-novatech/recotracking-app/libs/recotracking-recolib/src/PCB.cpp:47: undefined reference to `cv::xfeatures2d::SURF::create(double, int, int, bool, bool)'
collect2: error: ld returned 1 exit status
make[2]: *** [recotracking-app] Error 1
make[1]: *** [CMakeFiles/recotracking-app.dir/all] Error 2
make: *** [all] Error 2
10:51:49: Le processus "/usr/bin/cmake" s'est terminé avec le code 2.
Erreur lors de la compilation/déploiement du projet recotracking-app (kit : Desktop)
When executing step "CMake Build"
10:51:49: Temps écoulé : 06:59.
[94%]构建CXX对象CMakeFiles/recotracking app.dir/recotracking-app\u autogen/mocs\u compilation.cpp.o
[97%]构建CXX对象CMakeFiles/recotracking app.dir/recotracking-app_autogen/EWIEGA46WW/qrc_resources.cpp.o
[100%]链接CXX可执行文件跟踪应用程序
/home/bookbeo/recotracking app/libs/recotracking recolib/build/librecolib.a(PCB.cpp.o):在函数'reco::PCB::load(cv::Mat const&,cv::Mat const&,cv::Mat const&,std::vector')中:
CMakeFiles/recotracking app.dir/build.make:1045:目标“recotracking app”的配方失败
CMakeFiles/Makefile2:67:目标“CMakeFiles/recotracking app.dir/all”的配方失败
Makefile:83:目标“全部”的配方失败
/home/bookbeo novatech/recotracking app/libs/recotracking recolib/src/PCB.cpp:47:对“cv::xfeatures2d::SURF::create(double,int,int,bool,bool)”的未定义引用
collect2:错误:ld返回了1个退出状态
生成[2]:***[recotracking应用程序]错误1
生成[1]:***[CMakeFiles/recotracking app.dir/all]错误2
make:**[全部]错误2
10:51:49:Le processus“/usr/bin/cmake”是代码2的最新终端。
Erreur lors de la compilation/déploiement du projet recotracking应用程序(套件:桌面)
执行步骤“CMake构建”时
10:51:49:Tempsécoulé06:59。
我已经尝试重新构建opencv,它没有改变任何东西,而且似乎找到了模块xFeature2D,所以我不知道这个错误是从哪里来的

如果你有任何想法,我将非常感激


提前感谢。

尝试make VERBOSE=1查看代码是否在VERBOSE=1的OpenCV库中实际链接,所有库的输出中都会出现xFeature2d:“/usr/local/lib/libopencv_xfeatures2d.so.3.4.6”尝试make VERBOSE=1查看代码是否在VERBOSE=1的OpenCV库中实际链接,xfeatures2d显示在所有库的输出中:“/usr/local/lib/libopencv_xfeatures2d.so.3.4.6”