2017-08-05 67 views
4

我正在嘗試使用最新的CUDA 9.0 RC安裝OpenCV 3.3.0和contrib模塊,因此它與Microsoft Visual Studio 2017兼容。 CUDA安裝非常簡單,並且成功集成到VS 2017中。我根據各種在線指令進行操作,這使得我可以在沒有CUDA的情況下成功構建contrib模塊。使用CMake,CUDA 9.0 RC和Visual Studio 2017安裝OpenCV 3.3.0和contrib模塊

當我運行CMake的,但是(確保我將它設置爲2017年VS 64,參見: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

你將不得不修改CMake的設置,以反映在CUDA的重構庫(這個重構已經存在於CUDA 8的Linux中,所以我推測可能已經有CUDA 8的Linux OpenCV補丁)。正如你試圖做的那樣,混合使用CUDA版本是不可能的。 – talonmies

回答

3

我已經解決了這個問題。我使用lib.exe將這幾個庫合併成一個庫。

  1. 運行 「或x64原生工具命令提示符的VS 2017」
  2. 光盤放入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
0

對於那些具有問題產生nppi.lib如提及由Haotian Wang

1)運行步驟1和cd到C: \ Program Files(x86)\ Microso英尺的Visual Studio 14.0 \ VC(如果使用VS15)

2)vcvarsall.bat 64

然後用步驟2繼續如上

相關問題