I am trying to build a C++ project with OpenCV 3.4.20 that’s built with CUDA 11.6.2 on Visual Studio 2022 and on Windows 10. But, a few seconds after I begin to build the project, I see several errors such as this:
LNK2001 unresolved external symbol "int __cdecl cv::countNonZero(class cv::debug_build_guard::_InputArray const &)" (?countNonZero@cv@@YAHAEBV_InputArray@debug_build_guard@1@@Z)
System Specifications:
-
Windows 10
-
Visual Studio 2022
-
OpenCV 3.4.20 (built with CUDA and opencv_contrib modules)
-
CUDA 11.6.2
-
System variables are such as these:
CUDA_PATH = C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.6
CUDA_PATH_V11.6 = C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.6
-
PATH = C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.6bin C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.6lib C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.6libx64 C:UsersRITopencv-3.4buildbin C:UsersRITopencv-3.4buildlib
-
Relevant lines from TheopenCVProject.vcxproj file:
-
Under PropertyGroup Label=”Globals”:
<CudaToolkitCustomDir>C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.6</CudaToolkitCustomDir>
-
Under ImportGroup Label=”ExtensionSettings”:
<Import Project="$(VCTargetsPath)BuildCustomizationsCUDA 11.6.props" />
-
Under PropertyGroup Condition=”‘$(Configuration)|$(Platform)’==’Release|x64′”:
<IncludePath>C:UsersRITopencv-3.4buildinstallinclude;$(IncludePath)</IncludePath>
<LibraryPath>C:UsersRITopencv-3.4buildinstallx64vc17lib;$(LibraryPath)</LibraryPath>
-
Under ItemDefinitionGroup Condition=”‘$(Configuration)|$(Platform)’==’Release|x64′”
-
<AdditionalIncludeDirectories>C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.6;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-
<AdditionalDependencies>opencv_cudabgsegm3420.lib;npps.lib;nppial.lib;nppicc.lib;nppidei.lib;nppif.lib;nppig.lib;nppim.lib;nppist.lib;nppisu.lib;nppitc.lib;nppc.lib;Gdiplus.lib;opencv_bgsegm3420.lib;opencv_videoio3420.lib;opencv_cudalegacy3420.lib;opencv_video3420.lib;opencv_core3420.lib;opencv_highgui3420.lib;cudart.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;cublas.lib;%(AdditionalDependencies)</AdditionalDependencies>
-
<AdditionalLibraryDirectories>C:UsersRITopencv-3.4buildinstallx64vc17lib;C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.6libx64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-
Under CudaCompile:
<CodeGeneration>compute_86,sm_86</CodeGeneration>
<AdditionalLibraryDirectories>C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.6libx64;C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.6bincrt;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-
-
Notes:
- There are two folders under Users except Default and Public:
RIT
is the folder in which opencv, opencv_contrib and the folder of the project I want to build is located. The other oneRİT
is the default one with all the directories you might expect from a regular User directory such as AppData, Documents and Downloads are located. - When I check opencv folders I can see that all needed libraries are there and I can see that the functions subject of errors are both declared and defined in their respective .cpp, .h and .hpp files.