我正在尝试使用最新的CUDA 9.0 RC安装带有contrib模块的OpenCV 3.3.0,因此它与Microsoft Visual Studio 2017兼容.CUDA安装非常简单并成功集成到VS 2017中。我按照以下方式运行在线的各种说明,使我能够成功构建没有CUDA的contrib模块。
然而,当我运行CMake时(确保我将其设置为VS 2017 x64,请参阅:CMake: CUDA libraries not found when compiling OpenCV),我得到了经典之作:
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中构建解决方案时,几乎所有内容都失败了,但有一些变化:
5>LINK : fatal error LNK1104: cannot open file '..\..\lib\Release\opencv_core330.lib'
5>Done building project "opencv_ml.vcxproj" -- FAILED.
我还尝试进入CMakeCache文件并将路径更改为nppi库,将所有上述文件更改为以分号分隔。结果是一样的。 (作为一个注释,我只更改了库文件路径,而不是CMakeCache中每次提到的nppi)
我希望这可能是CUDA 9.0 RC的一个问题,可能需要CMake的补丁。有没有人有解决方法/我做错了什么? 我很感激你们所能提供的任何帮助。
答案 0 :(得分:4)
我已经解决了这个问题。我使用lib.exe将这几个库合并到一个库中。
答案 1 :(得分:0)
对于那些在Haotian Wang
提及时生成nppi.lib的问题1)运行步骤1并cd到C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC(如果使用vs15)
2)vcvarsall.bat x64
然后继续上面的步骤2