2016-07-10 17 views
29

Ich habe gerade Visual Studio 2015 auf meinem Laptop arbeiten unter Windows 10.

Ich habe ein Repository mit einem mit der gleichen Version erstellt Lösung geklont installiert von Visual Studio (Update 3) auf einem anderen PC, immer mit Fenstern 10.

Wenn ich versuche, die Lösung auf meinem Laptop zu bauen ich folgende Fehlermeldung erhalten:

c:\program files (x86)\microsoft visual studio 14.0\vc\include\crtdefs.h(10): fatal error C1083: Cannot open include file: 'corecrt.h': No such file or directory 

In this page ich habe, dass ich gelesen muss $(UniversalCRT_IncludePath) zu meinem Include hinzufügen Pfade, aber auch in diesem Fall bekomme ich den gleichen Fehler.

ich eingecheckt haben und $(UniversalCRT_IncludePath) bezieht sich auf diesen Pfad:

C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt 

Dieser Pfad auf meinem Laptop fehlt. Stattdessen habe ich dieses:

C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt 

So scheint es, dass Fensterversion anders ist. Wahrscheinlich ist das wahr, denn auf meinem Laptop habe ich das 1511 Windows Update nicht installiert, während auf dem anderen PC alles korrekt installiert ist.

Meine Frage ist, wie kann ich auf corecrt.h Datei in beiden PCs beziehen, ohne ein Chaos mit Pfaden zu machen. Ich möchte es vermeiden, diesen Pfad hart zu verknüpfen, weil sie vom PC abhängig sind. und ich verstehe nicht, warum in meinem Laptop der Pfad falsch ist, wenn man bedenkt, dass es systemabhängig sein sollte und nicht in Lösung verkabelt werden sollte.

Wie kann ich dieses Problem lösen? Ich weiß, dass ich meinen Laptop auf die gleiche Windows-Version aktualisieren kann, aber ich möchte es aus vielen Gründen vermeiden.

- EDIT

Ich habe bemerkt, dass, dass ich diesen Weg habe:

C:\Program Files (x86)\Windows Kits\8.1\Include\10.0.10240.0\ucrt 

es die gleiche 10.0.10240.0 Version hat aber im Zusammenhang mit einer anderen Fenster Kit-Version, also vielleicht ein Problem in dieser gibt es Fall. Auf meinem Laptop habe ich auch Visual Studio 2013, vielleicht kann es daraus entstehen, aber ich kann es nicht entfernen, weil ich ein anderes Projekt mit Visual Studio 2013 führe und ich es noch nicht entfernen kann.

Vielleicht in Visual Studio 2015 Ordner kann ich explizit die $(UniversalCRT_IncludePath) in einigen .bat-Datei (vcvarsall.bat oder ähnlich), aber ich weiß nicht, welche Datei und in welcher Position.

Antwort

50

für Visual Studio 2017 Ich musste:

  1. Führen Sie Visual Studio Installer.
  2. Wählen Sie die Schaltfläche Ändern.
  3. Wechseln Sie zur Registerkarte "Einzelkomponenten".
  4. Scrollen Sie nach unten zu "Compiler, Build-Tools und Laufzeiten".
  5. Tick "Windows Universal CRT SDK".
  6. Installieren.
+1

Bestätigt dies behoben und war das Beste mit mit 2017 Enterprise. – TravisWhidden

+1

Wenn Sie Ihre Installations-Exe gelöscht haben, gehen Sie einfach in Software> Rechtsklicken Sie auf Microsoft Visual Studio> Ändern. –

+2

Die Petersy72-Lösung funktioniert auch mit der Community-Edition von Visual Studio 2017. Ich denke also, dass es bei allen Versionen wichtig ist. Übrigens bedeutet CRT ** C ** ** R ** un ** T ** ime. – Patapoom

20

hast du das wahrscheinlich schon behoben, aber wenn jemand anderes mitkommt, habe ich das gelöst, indem ich dem Tipp here gefolgt bin.

Grundsätzlich folgende Systemumgebungsvariablen:

INCLUDE="C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt" 
LIB="C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64" 

Es ist wahrscheinlich eine viel bessere Best-Practice-Weg, es zu tun, aber dafür superschnelle gerade Festsetzung dieses funktionierte prima.

4

Vielleicht fehlte etwas während der Installation von Visual Studio. Sie können überprüfen, ob Sie vergessen haben, das VC++ - Toolset auszuwählen.

  1. Control Panel ->All Control Panel Items ->Programs and Features ->Visual studio 2015
  2. Click change/uninstall
  3. Wählen Sie das VC++2015 toolset(x86,x64) und installieren. VC++ 2017 v141 toolset(x86,x64)

Für Visual Studio 2017 RC Gemeinschaft (15.0.26206.0), ist der Name optional Werkzeug:

`VC++ 2017 v141 toolset(x86,x64)

+2

Vergessen Sie nicht, Computer mit dem Internet zu verbinden – simondoo

5

ich hatte das gleiche Problem. Ich habe die Antworten hier versucht. Es hat nicht 100% funktioniert. Was ich gefunden habe, ist, dass das Toolset VC++ 2015 (x86, x64) für die Community Edition 2017 notwendig ist (die ich jetzt benutze), aber ohne irgendwelche Include- oder lib-Links hinzuzufügen.

Mit freundlichen Grüßen.

5

Versuchen Sie, die Projekteigenschaften zu überprüfen (Menü Projekt> Eigenschaften). Unter Konfiguration Eigenschaften> Allgemein, dann überprüfen Sie die Platform Toolset und Windows SDK Version (bei Verwendung von Platform Toolset> VS2015) Nach der Einstellung Platform Toolset = VS2017 und Windows SDK Version = 10.x.x funktionierte es für mich.

1

Für mich hilft diese Einstellung in Visual Studio:

  • in Projekteigenschaften -> VC++ Verzeichnisse -> Neue Verzeichnisse -> offen für bearbeiten.
  • check Vererben von den Eltern oder Projektvorgaben
1

Für Visual Studio 2015 Enterprise, löste ich das Problem in ähnlicher Weise wie parsley72: (. Ab Version 8.1/Universal)

1. Run the Visual Studio Installer; 
2. Select Modify button; 
3. Go to "Windows and Web Development"; 
4. Tick "Universal Windows App Development Tools"; 
5. Install. 
0

Ich habe keine Erfahrung mit VC++, aber ich muss ta-lib für ein Python-Projekt erstellen. Da ich nichts in VC Studio anfassen will, aber mit der regulären C-Programmierung unter Unix experimentiert habe, habe ich den Ansatz gewählt, den Include-Pfad direkt in das Makefile einzufügen; z.B.:

INCPATH = -I ".......... \ einschließen" -I ".......... \ src \ ta_common" -I "...... .... \ src \ ta_abstract "-I" .......... \ src \ ta_abstract \ Tabellen "-I" .......... \ src \ ta_abstract \ frames "-I "C: \ Programme (x86) \ Windows-Kits \ 10 \ Include \ 10.0.10150.0 \ ucrt" -I "C: \ Programme (x86) \ Microsoft Visual Studio 14.0 \ VC \ einschließen"

Da es mehrere Makefiles in Unterverzeichnissen gibt, musste ich Änderungen an jedem vornehmen, aber es funktioniert in Ordnung für mich.