2016-11-11 7 views
0

J'essaie d'apprendre DirectX 11 et travaille actuellement sur l'éclairage. J'ai besoin d'ajouter une lumière directionnelle à la scène, mais quand je configure mon fichier LightHelper.h, il refuse de compiler. Il renvoie l'erreur X1507 "Echec de l'ouverture du fichier source: Windows.h".X1507 Visual Studio 2015 Impossible d'ouvrir le fichier source: "Windows.h"

J'ai essayé de désinstaller le SDK Windows et de reconfigurer certaines des options d'inclusion en vain. Voici mon code pour le fichier d'en-tête.

#pragma once 

    #include <Windows.h> 
    #include <DirectXMath.h> 

    struct DirectionalLight 
    { 
     DirectionalLight() 
     { 
      ZeroMemory(this, sizeof(this)); 
     } 

     DirectX::XMFLOAT4 Ambient; 
     DirectX::XMFLOAT4 Diffuse; 
     DirectX::XMFLOAT4 Specular; 
     DirectX::XMFLOAT3 Direction; 
     float Pad; 
    }; 

    struct Material 
    { 
     Material() 
     { 
      ZeroMemory(this, sizeof(this)); 
     } 

     DirectX::XMFLOAT4 Ambient; 
     DirectX::XMFLOAT4 Diffuse; 
     DirectX::XMFLOAT4 Specular; 
     DirectX::XMFLOAT4 Reflect; 
    }; 

Ce n'est pas le seul fichier d'en-tête (bien sûr) avec Windows.h, mais tous les autres lien sans problème ... J'ai essayé de le comprendre pour quelques jours maintenant . C'est plutôt ennuyant.

Merci

Edit: Ce sont les solutions que j'essayées.

Cannot open Windows.h

https://software.intel.com/en-us/articles/error-cannot-open-source-file-windowsh-in-gfx-sampleszip-shipped-with-intelr-c-compiler-150

J'ai aussi essayé de trouver le chemin du fichier direct dans "C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.1A \ include \". Il a juste jeté une autre erreur au sujet de ne pas pouvoir inclure un autre en-tête de Windows.h. Je pense qu'il était « excpt.h »

+0

Essayez-le sans la capitale W – user4581301

+0

Il lance la même erreur. : – abyssmu

+1

Que se passe-t-il avec un projet différent? Un petit monde de bonjour qui inclut windows.h juste pour voir si elle le peut? – user4581301

Répondre

0

Avec Visual C++ 2015, vous utilisez le SDK Windows 8.1 (par défaut) ou le SDK Windows 10. Dans les deux cas, vous avez déjà DirectXMath, D3DCompile et d'autres en-têtes Direct3D sur votre chemin, ainsi que le compilateur de shaders FXC comme ceux des SDK Windows standard. Si vous devez utiliser des composants hérités comme D3DX11, vous pouvez ajouter les chemins SDK hérités de DirectX, mais vous devez le faire après les chemins d'accès standard, pas avant, dans les propriétés Répertoires VC++.

$(VC_IncludePath);$(WindowsSDK_IncludePath);$(DXSDK_DIR)Include 

$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;$(DXSDK_DIR)Lib\x86 

$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(NETFXKitsDir)Lib\um\x64;$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;$(DXSDK_DIR)Lib\x64 

Voir Where is the DirectX SDK? et Where is the DirectX SDK (2015 Edition)?.

Bien sûr, idéalement, vous éviterez tout simplement le SDK DirectX hérité. Voir Living without D3DX

0

juste passer par ce tutoriel .... peut-être u peut facilement résoudre ur problème ... https://www.braynzarsoft.net/viewtutorial/q16390-braynzar-soft-directx-11-tutorials

+0

J'ai résolu mon problème en supprimant un fichier, mais j'ai commencé un autre projet à partir de zéro pour mieux comprendre DirectX 11. J'utilise ce tutoriel et c'est génial! Il y a quelques mises à jour qui sont nécessaires, car quelques-unes des bibliothèques qu'il utilise sont maintenant obsolètes, mais quelques recherches rapides ont résolu cela. Merci beaucoup pour ça !! +1 --- n'apparaîtra pas puisque je suis <15 rep. :( – abyssmu

0

Lorsque vous avez ajouté l'en-tête DirectX, vous avez changé l'en-tête chemin de recherche à celui de DirectX. Cela ne devrait pas avoir été un changement, vous devez avoir ajouté le chemin d'accès à la liste existante. Vous avez effectivement supprimé le chemin d'accès à Windows.h