2016-07-10 19 views
1

Ich versuche, Visionworks unter Windows zu installieren, wie in der Verknüpfung mit dem Namen „Visionworks 1.0 für Windows Readme“ auf dieser Seite beschrieben: https://developer.nvidia.com/embedded/visionworksÄrger Gebäude NVIDIA Vision (OpenVX) unter Windows

Nach der Readme-Dokument Vision ist kompatibel mit Windows mit folgenden Konfiguration:

OS  : Windows 8 x64 
OpenCV : public OpenCV 2.4.12 
CUDA  : NVIDIA CUDA 7.0 

ich mit den folgenden Variablen diese gleiche Konfiguration genau bin mit wie in der Readme (mit meinem speziellen PC-Pfaden) beschrieben:

I folgen Sie den Anweisungen in der README wie unten zu sehen (Bilder am Ende des Post):

Schritt 1: Copy Proben aus [VisionWorks_INSTALL_DIR] \ share \ Visionquellen zu einem \ Verzeichnis mit Schreibzugriff [SAMPLES_BUILD_DIR].

Schritt 2: Öffnen Prompt Entwickler Befehl Visual Studio - VS2013 x64 Gebürtige Werkzeuge
Eingabeaufforderung.

Schritt 3: Gehen Sie zu [SAMPLES_BUILD_DIR]:

> cd [SAMPLES_BUILD_DIR] 

Schritt 4:
Bearbeiten Sie die Datei config.nmake richtigen Pfade für alle Voraussetzung Installationsverzeichnis Informationen einzufügen.

# Dependency locations 
    CUDA_DIR = [CUDA_INSTALL_DIR] 
    OPENCV_DIR = [OpenCV_INSTALL_DIR]\build 
    OpenCV_VERSION = [OpenCV_VERSION] 
    VISIONWORKS_DIR = [VisionWorks_INSTALL_DIR] 

    # Debug build? 
    dbg = 0 

Schritt 5: Proben Körperbau Nmake

> nmake 

Verwendung Aber wenn ich führen Sie den Befehl nmake ich die folgende Fehlermeldung erhalten:

C:\cuda\VisionWorks\SAMPLES_BUILD_DIR> nmake 

Microsoft (R) Program Maintenance Utility Version 12.00.21005.1 Copyright (C) Microsoft Corporation. All rights reserved.

cd nvxio && "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\ amd64\nmake.exe"//nologo build if NOT EXIST "obj\release" mkdir "obj\release" cl /EHsc /O2 /MD /nologo "-DVISIONWORKS_DIR=\"C:/cuda/VisionWorks\"" -D USE_GUI=1 -DUSE_GLFW=1 -I./include -I./shaders -I../3rdparty/opengl -I../3rdpa rty/freetype/include -I../3rdparty/glfw3/include -I./src -DUSE_OPENCV=1 -I "C:\c uda\v7\include" -I "C:\opencv\include" -I "C:\cuda\VisionWorks\include" -I "..\3 rdparty\eigen" /Fo"obj\release\" /c src\Application.cpp src\ArgumentParser.cpp src\ConfigParser.cpp src\OptionHandler.cpp src\Utility.cpp Application.cpp c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\OptionHandler.hpp(109) : error C2783: 'nvxio::Range nvxio::ranges::all(void)' : could not deduce te mplate argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\OptionHandler.hpp(118) : error C2783: 'nvxio::Range nvxio::ranges::all(void)' : could not deduce te mplate argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\OptionHandler.hpp(127) : error C2783: 'nvxio::Range nvxio::ranges::all(void)' : could not deduce te mplate argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\OptionHandler.hpp(136) : error C2783: 'nvxio::Range nvxio::ranges::all(void)' : could not deduce te mplate argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' ArgumentParser.cpp c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\OptionHandler.hpp(109) : error C2783: 'nvxio::Range nvxio::ranges::all(void)' : could not deduce te mplate argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\OptionHandler.hpp(118) : error C2783: 'nvxio::Range nvxio::ranges::all(void)' : could not deduce te mplate argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\OptionHandler.hpp(127) : error C2783: 'nvxio::Range nvxio::ranges::all(void)' : could not deduce te mplate argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\OptionHandler.hpp(136) : error C2783: 'nvxio::Range nvxio::ranges::all(void)' : could not deduce te mplate argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' ConfigParser.cpp ./include\NVXIO/OptionHandler.hpp(109) : error C2783: 'nvxio::Range nvxio::ra nges::all(void)' : could not deduce template argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' ./include\NVXIO/OptionHandler.hpp(118) : error C2783: 'nvxio::Range nvxio::ra nges::all(void)' : could not deduce template argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' ./include\NVXIO/OptionHandler.hpp(127) : error C2783: 'nvxio::Range nvxio::ra nges::all(void)' : could not deduce template argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' ./include\NVXIO/OptionHandler.hpp(136) : error C2783: 'nvxio::Range nvxio::ra nges::all(void)' : could not deduce template argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' OptionHandler.cpp c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\OptionHandler.hpp(109) : error C2783: 'nvxio::Range nvxio::ranges::all(void)' : could not deduce te mplate argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\OptionHandler.hpp(118) : error C2783: 'nvxio::Range nvxio::ranges::all(void)' : could not deduce te mplate argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\OptionHandler.hpp(127) : error C2783: 'nvxio::Range nvxio::ranges::all(void)' : could not deduce te mplate argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\OptionHandler.hpp(136) : error C2783: 'nvxio::Range nvxio::ranges::all(void)' : could not deduce te mplate argument for 'T' c:\cuda\visionworks\samples_build_dir\nvxio\include\nvxio\Range.hpp(163) : see declaration of 'nvxio::ranges::all' Utility.cpp Generating Code... NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0 \VC\BIN\amd64\cl.EXE"' : return code '0x2' Stop. NMAKE : fatal error U1077: 'cd' : return code '0x2' Stop.

C:\cuda\VisionWorks\SAMPLES_BUILD_DIR>

Images showing the steps I performed

Was mache ich falsch?

Antwort

0

Das Problem ist, dass es einen Fehler (mehr eine Funktion fehlt Implementierung) in der VS 2013 Compiler. Funktionsschablonenparameter werden nur basierend auf Typen in den Argumenten abgeleitet, sodass ein Aufruf ohne Argumente keinen Abzug auslöst.

Die eher hässlich Abhilfe für Visionworks ist die Vorlage in Range.hpp

/* 
* \ingroup group_nvxio_range 
* \brief Creates a range that includes all points. 
* \return The range. 
*/ 
template <typename T> 
inline Range<T> all() { 
    return { std::numeric_limits<T>::lowest(), std::numeric_limits<T>::max(), true, true }; 
} 

mit einer Vorlage mit einem Dummy-Argumente zu ersetzen, und die Verwendungen in OptionHandler.hpp entsprechend zu beheben.

/* 
* \ingroup group_nvxio_range 
* \brief Creates a range that includes all points. 
* \return The range. 
*/ 
template <typename T> 
inline Range<T> all(T dummy) { 
    return { std::numeric_limits<T>::lowest(), std::numeric_limits<T>::max(), true, true }; 
} 

so dass die Aufrufe in OptionHandler.HPP sieht aus wie

static ptr real(float *result, const Range<float> &validRange = ranges::all<float>((float)1)); 

Also das den Code ziemlich fugly macht, und besiegt etwas den Zweck der Vorlage. Dieses Templating-Problem wurde in VS 2015 behoben, aber CUDA wird 2015 nicht kompiliert, wodurch OpenVX sinnloser verwendet wird.

+0

Erstaunlich. Danke, Asbjørn. – Josh