Ошибка установки OpenCV с использованием BUILD_ALL: поле типа класса без интерфейса DLL, используемого в классе с интерфейсом DLL (бесконечный цикл?)

#c #opencv #cmake #visual-studio-2017

#c #opencv #cmake #visual-studio-2017

Вопрос:

Я пытался установить OpenCV, используя исходные файлы, Cmake (gui) и Visual Studio в Windows, и столкнулся с несколькими проблемами.

Системные свойства

Windows 10 Enterprise версии 1709 Сборка ОС
16299.2166 Графический процессор = Nvidia Quadro P600 (версия драйвера 452.77) CMake 3.19.2
Cuda Toolkit версии 10.1
Microsoft Visual Studio Professional 2017 Версии 15.9.31
OpenCV 4.1.0 (дополнительные модули, загруженные с Github, являются последней версией)
Visual Toolkit версии 7.1

Список изменений конфигурации, внесенных в Cmake

 BUILD_opencv_world = True;  
OPENCV_EXTRA_MODULES_PATH = ../opencv_contrib-master/modules;  
WITH_CUDA = TRUE  
 

Примечание на стороне VTK_DIR

У меня установлен VTK, но он не определяется автоматически в Cmake. Конфигурация, похоже, проходит гладко, однако VTK_DIR имеет значение VTK_DIR-NOTFOUND . Когда я вручную устанавливаю VTK_DIR в ../vtk/lib/cmake/vtk-7.1, Cmake возвращает следующую ошибку:

 CMake Error at cmake/OpenCVUtils.cmake:1339 (target_link_libraries):
  The INTERFACE, PUBLIC or PRIVATE option must appear as the second argument,
  just after the target name.
Call Stack (most recent call first):
  cmake/OpenCVUtils.cmake:1353 (__ocv_push_target_link_libraries)
  cmake/OpenCVModule.cmake:941 (ocv_target_link_libraries)
  cmake/OpenCVModule.cmake:850 (_ocv_create_module)
  modules/world/CMakeLists.txt:60 (ocv_create_module)


CMake Warning at cmake/OpenCVGenSetupVars.cmake:54 (message):
  CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install
  directory
Call Stack (most recent call first):
  CMakeLists.txt:1066 (include)
 

поле типа класса без интерфейса DLL, используемое в классе с интерфейсом DLL

Это результат конфигурации Cmake

 AVX_512F is not supported by C   compiler
AVX512_SKX is not supported by C   compiler
Dispatch optimization AVX512_SKX is not available, skipped
libjpeg-turbo: VERSION = 2.0.2, BUILD = opencv-4.1.0-libjpeg-turbo
found Intel IPP (ICV version): 2019.0.0 [2019.0.0 Gold]
at: C:/Users/byan982/softwarehere/opencv/opencv/build/3rdparty/ippicv/ippicv_win/icv
found Intel IPP Integration Wrappers sources: 2019.0.0
at: C:/Users/byan982/softwarehere/opencv/opencv/build/3rdparty/ippicv/ippicv_win/iw
CUDA detected: 10.1
CUDA NVCC target flags: -gencode;arch=compute_30,code=sm_30;-gencode;arch=compute_35,code=sm_35;-gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_52,code=sm_52;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-D_FORCE_INLINES
Could not find OpenBLAS include. Turning OpenBLAS_FOUND off
Could not find OpenBLAS lib. Turning OpenBLAS_FOUND off
Could NOT find BLAS (missing: BLAS_LIBRARIES) 
Could NOT find LAPACK (missing: LAPACK_LIBRARIES) 
    Reason given by package: LAPACK could not be found because dependency BLAS could not be found.

OpenCV Python: during development append to PYTHONPATH: C:/Users/byan982/softwarehere/opencv/opencv/build/python_loader
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) 
    Reason given by package: The command
      "C:/cygwin64/bin/pkg-config" --version
    failed with output:

    stderr: 
      
    result: 
%1 is not a valid Win32 application

Module opencv_alphamat disabled because the following dependencies are not found: Eigen
Caffe:   NO
Protobuf:   NO
Glog:   NO
freetype2:   NO
harfbuzz:    NO
Julia not found. Not compiling Julia Bindings. 
Module opencv_ovis disabled because OGRE3D was not found
No preference for use of exported gflags CMake configuration set, and no hints for include/library directories provided. Defaulting to preferring an installed/exported gflags CMake configuration if available.
Failed to find installed gflags CMake configuration, searching for gflags build directories exported with CMake.
Failed to find gflags - Failed to find an installed/exported CMake configuration for gflags, will perform search for installed gflags components.
Failed to find gflags - Could not find gflags include directory, set GFLAGS_INCLUDE_DIR to directory containing gflags/gflags.h
Failed to find glog - Could not find glog include directory, set GLOG_INCLUDE_DIR to directory containing glog/logging.h
Module opencv_sfm disabled because the following dependencies are not found: Eigen Glog/Gflags
Tesseract:   NO
Processing WORLD modules...
    module opencv_cudev...
    module opencv_core...
    module opencv_cudaarithm...
    module opencv_flann...
    module opencv_hdf...
    module opencv_imgproc...
    module opencv_intensity_transform...
    module opencv_ml...
    module opencv_phase_unwrapping...
    module opencv_plot...
    module opencv_quality...
    module opencv_reg...
    module opencv_surface_matching...
    module opencv_cudafilters...
    module opencv_cudaimgproc...
    module opencv_cudawarping...
    module opencv_dnn...
    module opencv_dnn_superres...
    module opencv_fuzzy...
    module opencv_gapi...
    module opencv_hfs...
    module opencv_imgcodecs...
    module opencv_photo...
    module opencv_videoio...
    module opencv_xphoto...
    module opencv_cudacodec...
    module opencv_highgui...
    module opencv_bioinspired...
    module opencv_dnn_objdetect...
    module opencv_features2d...
    module opencv_line_descriptor...
    module opencv_saliency...
    module opencv_text...
    module opencv_calib3d...
    module opencv_ccalib...
    module opencv_cudafeatures2d...
    module opencv_cudastereo...
    module opencv_datasets...
    module opencv_mcc...
    module opencv_objdetect...
    module opencv_rapid...
    module opencv_rgbd...
rgbd: CERES support is disabled. Ceres Solver is Required for Posegraph optimization
    module opencv_shape...
    module opencv_structured_light...
    module opencv_video...
    module opencv_xfeatures2d...
    module opencv_ximgproc...
    module opencv_xobjdetect...
    module opencv_aruco...
    module opencv_bgsegm...
    module opencv_cudabgsegm...
    module opencv_cudalegacy...
    module opencv_cudaobjdetect...
    module opencv_dpm...
    module opencv_face...
    module opencv_optflow...
    module opencv_stitching...
    module opencv_tracking...
    module opencv_cudaoptflow...
    module opencv_stereo...
    module opencv_superres...
    module opencv_videostab...
Processing WORLD modules... DONE
Excluding from source files list: modules/imgproc/src/sumpixels.avx512_skx.cpp
Excluding from source files list: <BUILD>/modules/world/layers/layers_common.avx512_skx.cpp
CMake Warning at cmake/OpenCVGenSetupVars.cmake:54 (message):
  CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install
  directory
Call Stack (most recent call first):
  CMakeLists.txt:1066 (include)



General configuration for OpenCV 4.1.0 =====================================
  Version control:               unknown

  Extra modules:
    Location (extra):            C:/Users/byan982/softwarehere/opencv/opencv_contrib-master/modules
    Version control (extra):     unknown

  Platform:
    Timestamp:                   2021-01-17T23:15:42Z
    Host:                        Windows 10.0.16299 AMD64
    CMake:                       3.19.2
    CMake generator:             Visual Studio 15 2017
    CMake build tool:            C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/MSBuild/15.0/Bin/MSBuild.exe
    MSVC:                        1916

  CPU/HW features:
    Baseline:                    SSE SSE2 SSE3
      requested:                 SSE3
    Dispatched code generation:  SSE4_1 SSE4_2 FP16 AVX AVX2
      requested:                 SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
      SSE4_1 (15 files):           SSSE3 SSE4_1
      SSE4_2 (2 files):            SSSE3 SSE4_1 POPCNT SSE4_2
      FP16 (1 files):              SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
      AVX (5 files):               SSSE3 SSE4_1 POPCNT SSE4_2 AVX
      AVX2 (29 files):             SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2

  C/C  :
    Built as dynamic libs?:      YES
    C   Compiler:                C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe  (ver 19.16.27045.0)
    C   flags (Release):         /DWIN32 /D_WINDOWS /W4 /GR  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi      /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /MP4   /MD /O2 /Ob2 /DNDEBUG 
    C   flags (Debug):           /DWIN32 /D_WINDOWS /W4 /GR  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi      /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /MP4   /MDd /Zi /Ob0 /Od /RTC1 
    C Compiler:                  C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe
    C flags (Release):           /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi        /MP4    /MD /O2 /Ob2 /DNDEBUG 
    C flags (Debug):             /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi        /MP4  /MDd /Zi /Ob0 /Od /RTC1 
    Linker flags (Release):      /machine:x64  /INCREMENTAL:NO 
    Linker flags (Debug):        /machine:x64  /debug /INCREMENTAL 
    ccache:                      NO
    Precompiled headers:         NO
    Extra dependencies:          cudart_static.lib nppc.lib nppial.lib nppicc.lib nppicom.lib nppidei.lib nppif.lib nppig.lib nppim.lib nppist.lib nppisu.lib nppitc.lib npps.lib cublas.lib cufft.lib -LIBPATH:C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1/lib/x64
    3rdparty dependencies:

  OpenCV modules:
    To be built:                 aruco bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev datasets dnn dnn_objdetect dnn_superres dpm face features2d flann fuzzy gapi hdf hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab world xfeatures2d ximgproc xobjdetect xphoto
    Disabled:                    -
    Disabled by dependency:      -
    Unavailable:                 alphamat cnn_3dobj cvv freetype java js julia matlab ovis python2 python2 sfm viz
    Applications:                tests perf_tests apps
    Documentation:               NO
    Non-free algorithms:         NO

  Windows RT support:            NO

  GUI: 
    Win32 UI:                    YES

  Media I/O: 
    ZLib:                        build (ver 1.2.11)
    JPEG:                        build-libjpeg-turbo (ver 2.0.2-62)
    WEBP:                        build (ver encoder: 0x020e)
    PNG:                         build (ver 1.6.36)
    TIFF:                        build (ver 42 - 4.0.10)
    JPEG 2000:                   build (ver 1.900.1)
    OpenEXR:                     build (ver 1.7.1)
    HDR:                         YES
    SUNRASTER:                   YES
    PXM:                         YES
    PFM:                         YES

  Video I/O:
    DC1394:                      NO
    FFMPEG:                      YES (prebuilt binaries)
      avcodec:                   YES (58.35.100)
      avformat:                  YES (58.20.100)
      avutil:                    YES (56.22.100)
      swscale:                   YES (5.3.100)
      avresample:                YES (4.0.0)
    GStreamer:                   NO
    DirectShow:                  YES
    Media Foundation:            YES
      DXVA:                      YES

  Parallel framework:            Concurrency

  Trace:                         YES (with Intel ITT)

  Other third-party libraries:
    Intel IPP:                   2019.0.0 Gold [2019.0.0]
           at:                   C:/Users/byan982/softwarehere/opencv/opencv/build/3rdparty/ippicv/ippicv_win/icv
    Intel IPP IW:                sources (2019.0.0)
              at:                C:/Users/byan982/softwarehere/opencv/opencv/build/3rdparty/ippicv/ippicv_win/iw
    Lapack:                      NO
    Eigen:                       NO
    Custom HAL:                  NO
    Protobuf:                    build (3.5.1)

  NVIDIA CUDA:                   YES (ver 10.1, CUFFT CUBLAS)
    NVIDIA GPU arch:             30 35 37 50 52 60 61 70 75
    NVIDIA PTX archs:

  OpenCL:                        YES (NVD3D11)
    Include path:                C:/Users/byan982/softwarehere/opencv/opencv/sources/3rdparty/include/opencl/1.2
    Link libraries:              Dynamic load

  Python 3:
    Interpreter:                 C:/Users/byan982/Anaconda3/python.exe (ver 3.8.5)
    Libraries:                   C:/Users/byan982/Anaconda3/libs/python38.lib (ver 3.8.5)
    numpy:                       C:/Users/byan982/Anaconda3/lib/site-packages/numpy/core/include (ver 1.19.2)
    install path:                C:/Users/byan982/Anaconda3/Lib/site-packages/cv2/python-3.8

  Python (for build):            C:/Python27/python.exe

  Java:                          
    ant:                         NO
    JNI:                         C:/Program Files/Amazon Corretto/jdk11.0.3_7/include C:/Program Files/Amazon Corretto/jdk11.0.3_7/include/win32 C:/Program Files/Amazon Corretto/jdk11.0.3_7/include
    Java wrappers:               NO
    Java tests:                  NO

  Install to:                    C:/Users/byan982/softwarehere/opencv/opencv/build/install
-----------------------------------------------------------------

Configuring done
 

Из-за этой ошибки я установил для WITH_VTK значение false и приступил к генерации в Cmake. Я запускаю Visual Studio от имени администратора и открываю OpenCV.sln. Я создаю ALL_BUILD (configuration = Debug x64), и Visual Studio запускает, казалось бы, бесконечный цикл одних и тех же сообщений об ошибках (я остановился на 5000 сообщениях об ошибках)

 24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/private.cuda.hpp(75): warning C4005: 'NPP_VERSION': macro redefinition
24>C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.1includenpp.h(64): note: see previous definition of 'NPP_VERSION'
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/types.hpp(530): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/types.hpp(532): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/types.hpp(771): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/mat.hpp(257): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/mat.hpp(2681): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/mat.hpp(2682): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/mat.hpp(3547): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/persistence.hpp(454): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/persistence.hpp(457): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core.hpp(112): warning : base class dllexport/dllimport specification differs from that of the derived class
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core.hpp(132): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core.hpp(135): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core.hpp(136): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core.hpp(137): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/utility.hpp(1196): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/utility.hpp(1207): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/cuda.hpp(498): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/cuda.hpp(687): warning : field of class type without a DLL interface used in a class with a DLL interface
24>
24>C:Usersbyan982softwarehereopencvopencvsourcesmodulescoreincludeopencv2/core/cuda.hpp(723): warning : field of class type without a DLL interface used in a class with a DLL interface
 

Ответ №1:

Я столкнулся с такой же проблемой, но не волнуйтесь, это всего лишь предупреждения, честно говоря, это не приведет к бесконечному циклу.. В моем случае на это ушло 1,5 часа.. Кроме того, не забудьте выбрать только свою cuda arch .. в моем случае это была cuda arch 7.5

Также обязательно проверьте версию Numpy, для безопасности сначала установите pip —обновите numpy, затем продолжайте..

Вы можете следовать этому руководству. Это было действительно полезно. https://learnopencv.com/how-to-use-opencv-dnn-module-with-nvidia-gpu-on-windows /

ВЫПОЛНИТЕ ВСЕ ЭТИ ШАГИ, ЭТО ЗАЙМЕТ ОКОЛО 1,5 ЧАСОВ, ЧТОБЫ ВЫ МОГЛИ ВЫПОЛНИТЬ ДРУГУЮ ЗАДАЧУ ЗА ЭТО ВРЕМЯ.