Visual Studio Standard C++ Header Pfade festlegen

SgtIcetea

Captain
Registriert
Aug. 2011
Beiträge
3.882
Hallo,
ich wollte mit Visual Studio 2015 community C++ programmieren. Direkt das erste "Hello World" spuckte aber einen Fehler aus, stdio.h kann nicht gefunden werden. In stundenlanger google suche habe ich jetzt heraus gefunden dass ich über die Projekt Einstellungen die Pfade für "C++ -> Additional Include Directories" und "VC++ Directories -> Library Directories" manuell einstellen muss auf C:\Program Files (x86)\Windows Kits\... und halt je das passende Verzeichnis.

Das Problem ist, dass diese Einstellungen nur für das aktuelle Projekt gelten und bei einem neuen Projekt wieder neu gemacht werden müssen. Unter VS15 gibts auch keine globale Einstellung dafür.

Daher meine Frage: Wie bekomme ich es hin dass Visual Studio die Pfade selber findet, bzw wie kann ich die Pfade für jedes Projekt als Preset übernehmen? Hab Visual Studio schon neu installiert etc hat alles nicht geholfen

Danke schon mal für eure Hilfe
 
SgtIcetea schrieb:
Direkt das erste "Hello World" spuckte aber einen Fehler aus, stdio.h kann nicht gefunden werden. In

X-Y-Problem?

Hast Du
Code:
#include "stdio.h"
oder
Code:
 #include <stdio.h>
oder
Code:
 #include <cstdio>
oben drüber geschrieben?
 
Hier ist der gesamte Code, ist aber irrelevant da ich das Problem ja schon "gelöst" hab und nur nach einer Standardlösung suche

Code:
// HelloWorld.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>

int main()
{
	std::cout << "Hello World!\n";
	return 0;
}
 
Also ich kann dir sagen, dass VS die Standardheader von alleine finden sollte. Wenn das nicht der Fall ist, liegt entweder ein Bedienungsfehler vor oder die Installation ist aus irgendeinem Grund fehlerhaft. Leider kann ich bei der Diagnose keine wirkliche Hilfe leisten.
 
blöderidiot schrieb:
Genau das und nur das!

SgtIcetea schrieb:
Hier ist der gesamte Code, ist aber irrelevant da ich das Problem ja schon "gelöst" hab und nur nach einer Standardlösung suche
Ja richtig, du hast es "gelöst", mit einem absolut häßlichen Workaround, der so weder richtig noch sinnvoll ist.
Der Code ist absolut relevant, weil er zeigt was dein eigentliches Problem ist. Dein Problem ist nämlich X und du willst eine Lösung für Y, wobei Y gar kein Problem ist, weil es aus X resultiert und du alles lösen kannst, indem du X löst. (X-Y-Problem ;))

Also, was ist nun die Lösung:
Wähle beim Erstellen eines neuen Projects aus, dass du ein Leeres Projekt (Empty project) haben willst und lass den stdafx Header weg. Und schon hast du kein Problem mehr und Visual Studio findet alle Standard Header ohne Probleme.

Gruß
BlackMark
 
@BlackMark: Das sollte auch bei einem Konsolenprojekt und mit stdafx problemlos funktionieren (habs grad bei mir noch mal ausprobiert)
 
Naja, bei mir funktioniert das von Visual Studio erstellte Standardprojekt auch, aber ich weiß ja nicht was der TE in seiner stdafx.h noch so alles stehen hat. Möglich, dass dort das Problem liegt.
Oder vielleicht ist wirklich die Visual Studio Installation kaputt und eine saubere Neuinstallation wäre angebracht. Aber das wird uns nur der TE sagen können. Auf jeden Fall ist aber ein Leeres Projekt nur mit iostream und einem cout besser um solche Fehler auszuschließen.

Gruß
BlackMark
 
1) Nachdem ich das Problem gestern hatte habe ich Visual Studio mit dem Uninstaller komplett entfernt, alles was damit zu tun hatte gelöscht und neu installiert
2) Ich habe nichts verändert an irgendwelchen Dateien, habe bisher nur VS gestartet den Hello World Code eingegeben und das wars
3)Leeres Projekt -> Add New Item nur mit Hello World Code führt wieder zu Error C1083 dieses mal: Cannot open include file: 'corecrt.h' gibt dann unter File: "crtdefs.h" an.

Wie würde ich denn vorgehen wenn ich es nochmal komplett neu installieren sollte? Selbst der Uninstaller scheint da ja nicht geholfen zu haben und der sollte eigentlich alles was auch nur im Entferntesten mit Visual Studio zu tun hat löschen
 
1) Klingt gut.
2) Klingt auch gut. Sieht der Code den du verwendet hast genau so aus?
Code:
#include <iostream>

int main()
{
    std::cout << "Hello World!" << std::endl;
    return 0;
}
3) Kannst du die genaue Fehlermeldung posten? Oder selbst in Google eingeben, dann findest du vermutlich jemanden der das gleiche Problem schon hatte und möglicherweise eine Lösung. Nur mit der halben Fehlermeldung kann man wenig anfangen.

Eigentlich sollte der Uninstaller ausreichend sein und alles löschen, möglicherweise liegt dein Problem auch wo anders. Gib mal den getesteten Code und die vollständige Fehlermeldung an.

Gruß
BlackMark
 
Ich bin skeptisch ob man VS wirklich vollständig vom System entfernen kann. Irgendwelche reg keys bleiben vermutlich immer zurück. Evtl. liegt das Problem auch bei einer fehlerhaften installation des WindowsSDKs, welches bei VS mit installiert wird.
Was für ein OS hast du eigentlich?

Je nachdem, was du machen wills wäre die Holzhammermethode VS15 preview zu installieren.
 
Ich schließe mich Miuwa an und die Visual Studio Version wäre auch noch hilfreich zu wissen.
Sollte das Windows SDK nicht auch deinstalliert werden, wenn man Visual Studio deinstalliert? Registry Keys mal außgenommen, die bleiben ganz sicher zurück, sollten aber auch bei einer Neuinstallation überschrieben werden.

Gruß
BlackMark
 
Hab mal genau deinen Code rein kopiert, der genaue Fehler:

Severity Code Description Project File Line Suppression State
Error C1083 Cannot open include file: 'corecrt.h': No such file or directory Project1 c:\program files (x86)\microsoft visual studio 14.0\vc\include\crtdefs.h 10


Erwartet der jetzt also die Datei in dem Ordner? Und warum ist die da nicht? Habe ich bei der Visual Studio Installation irgendeinen Haken vergessen oder so? Der Ordner Visual Studio 14.0 existierte vor Installation auf jeden Fall nicht.

Win 10 auf aktuellem Stand und VS ist die VS15 Community von hier: https://www.visualstudio.com/de/downloads/
 
Habe gerade bei mir nachgeschaut wo der "corecrt.h" Header ist und der liegt nicht im gleichen Verzeichnis wie "crtdefs.h" sondern im Ordner vom Windows 10 SDK.
Versuch mal das zu installieren: https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

Edit:
Und schau nach ob der Ordner "C:\Program Files (x86)\Windows Kits\10\Include" existiert und mindestens eine Version des SDKs enthält.

Edit2:
Habe gerade gesehen, dass das schon im ersten Post steht, sorry.

Edit3:
Schau mal bei VC++ Directories -> Include Directories -> <Edit...>
Was steht dort bei "Evaluated value:" und bei "Inherited values:"?

Gruß
BlackMark
 
Zuletzt bearbeitet:
Evaluated: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include

Inherited: $(VC_IncludePath)
$(WindowsSDK_IncludePath)

Also brauche ich den Link nicht noch zu installieren?
 
Das Problem ist scheinbar, dass "$(WindowsSDK_IncludePath)" nicht richtig evaluiert wird. Bei mir steht nämlich unter anderem "C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt" bei Evaluated.
Also versuch mal Visual Studio und das Windows 10 SDK zu deinstallieren und neu zu installieren. Möglicherweise löst das dein Problem.

Edit:
Wenn du rechts unten auf "Macros>>" gehst und oben in der Suche "$(WindowsSDK_IncludePath)" eingibst, was bekommst du dann bei Value angezeigt?
Und wenn du "$(VC_IncludePath)" eingibst, was steht dann bei Value?

Gruß
BlackMark
 
Zuletzt bearbeitet:
VS Studio scheint zu denken ich hätte Win 8?
VS Studio.pngVS Studio2.png
 
Nein, das steht bei mir auch mit Win 8. Ist das Win 8 SDK, das musst du natürlich haben, wenn du nicht nur für Windows 10 entwickeln willst.
Viel interessanter ist, dass "C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt" bei dir im Pfad steht, aber bei "Evaluated" nicht aufscheint. Jetzt stellt sich nur die Frage warum das so ist. (Ich habe keine Ahnung)

Versuch wirklich noch einmal komplett zu deinstallieren, alles was mit Visual Studio zusammen hängt (außer die Redistributables), neustarten, alles wieder installieren.

Edit:
Den Haken bei "Inherit from parent or project defaults" hast du gesetzt, oder?

Gruß
BlackMark
 
Zuletzt bearbeitet:
Sollte eigentlich mit VS zusammen deinstalliert werden, ja.
Möglicherweise kann man auch über den Installer des SDKs deinstallieren, kannst ja mal versuchen.

Gruß
BlackMark
 
Zurück
Oben