使用CMake,CUDA 9.0 RC和Visual Studio 2017安装带有contrib模块的OpenCV 3.3.0

时间:2017-08-05 18:53:08

标签: c++ opencv cuda 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: 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的补丁。有没有人有解决方法/我做错了什么? 我很感激你们所能提供的任何帮助。

2 个答案:

答案 0 :(得分:4)

我已经解决了这个问题。我使用lib.exe将这几个库合并到一个库中。

  1. 运行" x64本机工具命令提示符VS 2017"
  2. cd进入cuda文件夹
  3. lib.exe /out:nppi.lib nppial.lib nppicc.lib nppicom.lib nppidei.lib nppif.lib nppig.lib nppim.lib nppist.lib nppisu.lib nppitc.lib

答案 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