Installing OpenCV 3.3.0 with contrib modules using CMake, CUDA 9.0 RC and Visual Studio 2017
我正在尝试使用最新的CUDA 9.0 RC安装带有contrib模块的OpenCV 3.3.0,以便与Microsoft Visual Studio 2017兼容。CUDA安装非常简单,已成功集成到VS 2017中。我正在运行根据网上的各种说明,这使我能够在没有CUDA的情况下成功构建contrib模块。
但是,当我运行CMake时(确保将其设置为VS 2017 x64,请参阅:CMake:编译OpenCV时未找到CUDA库),我得到了经典的代码:
1 2 3 4 | CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: CUDA_nppi_LIBRARY (ADVANCED): linked by target... |
这不是上面发布的x64问题。 CUDA 9.0RC实际上不包含nppi.lib,相反,Nvidia似乎将其分为几个库:nppial.lib,nppicc.lib,nppicom.lib,nppidei.lib,nppif.lib,nppig.lib,nppist。 lib nppisu.lib和nppitc.lib
为解决此问题,我将CUDA 8.0中的nppi.lib直接添加到CUDA 9.0的库目录中。这似乎使对CMake的配置感到满意,但是最终当我在Visual Studio中构建解决方案时,几乎所有的操作都因以下变化而失败:
1 2 3 | 5>LINK : fatal error LNK1104: cannot open file '..\\..\\lib\ elease\\opencv_core330.lib' 5>Done building project"opencv_ml.vcxproj" -- FAILED. |
我还尝试进入CMakeCache文件并将nppi库的路径更改为所有上述文件,并以分号分隔。结果是一样的。 (请注意,我只更改了库文件路径,而没有更改CMakeCache中其他所有关于nppi的内容)。
我希望这可能是CUDA 9.0 RC的问题,可能需要CMake的补丁程序。有人有解决方法/我做错了什么吗?
感谢您提供的任何帮助。
我已经解决了这个问题。我使用lib.exe将这几个库合并到一个库中。
针对那些难以生成nppi.lib的人,如王皓天所说的
1)运行步骤1并cd到C:\\\\ Program Files(x86)\\\\ Microsoft Visual Studio 14.0 \\\\ VC(如果使用vs15)
2)vcvarsall.bat x64
然后继续上述步骤2