Du bist nicht angemeldet.

#1 28.04.2020 15:40:28

LotosKaiser04
Mitglied

Visual Studio Code #include-fehler

Hallo, ich bin neu bei Arch Linux und wollte Visual Studio Code mit C++ Installieren.
Eigentlich hat alles Funktoniert, nur wen ich ein C++ Programme schreibe und den <iostream> header einbinde gibt er mir den Fehler aus das er die Libary nicht finden kann.
Außerdem sagt er auch das ich ein Package namens vcpkg installieren soll was ich aber schon getann hab.
Vieleicht kann mir jemand ja helfen?

MFG Alexander

Offline

#2 28.04.2020 16:56:29

stefanhusmann
Moderator

Re: Visual Studio Code #include-fehler

Du wirst uns wesentlich mehr erzählen müssen, wenn man dir effektiv helfen soll. So sind wir hier nur auf Vermutungen angewiesen.


  • Wie hast du Das Programm installiert?

    • Aus den Repos (Paket "code" aus dem [community]-Repo)?

    • Aus dem AUR, wenn ja, wie wie bist du genau vorgegangen?

  • Was ist vcpkg und wie hast du dies installiert?

  • Wie sieht dein Code aus, der die Fehlermeldung erzeugt hat?

  • Wie lautet die genaue Fehlermeldung? Kommt sie vom Compiler oder von der IDE?

  • Welcher Compiler soll zum Einsatz kommen? Vermutlich g++?

Online

#3 28.04.2020 18:05:23

LotosKaiser04
Mitglied

Re: Visual Studio Code #include-fehler

Also, ich habe die Aur von Visual Studio Code mit git heruntergeladen und installiert und auch mit dem Befehl makepkg -s also sollte er ja alles dazu installieren.
Dieser Fehler kommt von der IDE selber der nähmlich sagt das er kein Kit finden kann >> "Aktualisieren sie den IncludePath ".
Wen man auch über den Fehler drüber geht steht ein Beitrag wie man vpkg installiert deswegen.
Ich hatte auch vorhin eine Konfig Datei gefunden bei der man angeben sollte wo der Compiler installiert ist da hab ich in den Ordner reingeguckt aber wo eigentlich gcc sein sollte war kein Order.
Aber wen man den Befehl gcc im Terminal eingibt dann funktoniert es ja.

Offline

#4 28.04.2020 21:23:30

stefanhusmann
Moderator

Re: Visual Studio Code #include-fehler

Die Fragen

  • Was ist vcpkg und wie hast du dies installiert?

  • Wie sieht dein Code aus, der die Fehlermeldung erzeugt hat?

  • Wie lautet die genaue Fehlermeldung?

wurden nicht beantwortet.

"Aktualisieren sie den IncludePath ".

Dies ist zu tun. Wie man das in Visual Studio Code macht, weiß ich nicht.

Online

#5 29.04.2020 07:30:27

T.M.
Mitglied

Re: Visual Studio Code #include-fehler

stefanhusmann schrieb:

Die

... irrelevanten...

Fragen

  • Was ist vcpkg und wie hast du dies installiert?

  • Wie sieht dein Code aus, der die Fehlermeldung erzeugt hat?

  • Wie lautet die genaue Fehlermeldung?

wurden nicht beantwortet.

"Aktualisieren sie den IncludePath ".

Dies ist zu tun. Wie man das in Visual Studio Code macht, weiß ich nicht.

Warum antwortest Du dann zweimal, ohne etwas beizutragen?

Das Problem stellt sich jedem sofort, der Visual Studio Code (und zwar egal wie) und dazu die C/C++ Extension installiert und dann eine Quelldatei öffnet, sowohl unter Linux wie auch unter Windows. Visual Studio Code bringt selbst keinen Compiler mit, man muss ihm sagen, womit man arbeitet und wo die header liegen. Dies tut man z.B. im Menü unter File|Preferences|Settings, dort unter Extensions|C/C++, da gibt es weiter unten die Einstellungen Include Path und System Include Path. Ersterer ist der, der für

#include "..."

, letzterer der, der für

#include <...>

benutzt wird. Trivial ist das aber nicht, man braucht eine Zeitlang, bevor man alle zusammen hat und das richtig funktioniert. (Allzu viele Compileroptionen würde ich übrigens dort nicht setzen, das macht man besser im Makefile oder was man hat.)

Wahrscheinlich ist es dann noch gut, diese Einstellungen nicht in den globalen settings, sondern in einem projektspezifischen Visual Studio Code Workspace zu speichern. Wenn man mal ein zweites oder drittes Projekt hat, zahlt sich diese Ordnung aus.

Um den System Include Path zu ermitteln, kann man bei gcc eine Abfrage durchführen, er macht dann eine Auflistung mit allen ihm bekannten Verzeichnissen angefangen bei /usr/local/include, dafür gibt's eine Kommandozeilenoption. Hab's aber zuletzt vor zehn Jahren mal gemacht und nicht mehr im Kopf. (Vielleicht langt es aber auch schon, den verwendeten Compiler weiter oben in Compiler Path bekanntzugeben. Unter Linux funktioniert das besser als unter Windows.)

Offline

#6 29.04.2020 10:34:35

LotosKaiser04
Mitglied

Re: Visual Studio Code #include-fehler

Diesen Befehl um Anzuzeigen wo gcc Installiert ist find ich nicht aber eine gcc Datei ist /usr/bin zufinden.
Nur ist die Frage wie gibt man dies an weil wen ich da reinschreibe /usr/bin/gcc  ist das  '/' rot unterzeichnet.

Offline

#7 29.04.2020 16:37:09

T.M.
Mitglied

Re: Visual Studio Code #include-fehler

Wo gcc installiert ist, ist keine grosse Frage. Das Programm liegt fast immer unter /usr/bin. Die Frage ist eher, ob Du mit gcc arbeitest, oder ob Du nicht C++-Quellen vor Dir hast, dann hiesse der Compiler g++, oder ob Du vielleicht mit clang oder noch etwas anderem arbeitest.

Zwotens, die Include-Pfade müssen unter Linux, wie ich gerade sehe, direkt in die Datei settings.json geschrieben werden. (Unter Windows ist das nicht so.) Die Datei settings.json ist eine gewöhnliche JSON-Datei und muss folglich der JSON-Syntax genügen. Die dort durch Visual Studio Code hinzugefügte Zeile

"C_Cpp.default.systemIncludePath": []

enthält rechts zwei leere eckige Klammern, d.h. dort wird ein Feld von Werten erwartet. Die Werte müssen Zeichenketten sein, also am besten in Anführungszeichen stehen. Die Angabe mehrerer Werte (Pfade) erfolgt also dort prinzipiell so:

"C_Cpp.default.systemIncludePath": ["/usr/local/include", "/usr/include"]

Da diese Pfade zahlreich sein können, schreibt man sie am besten gleich untereinander:

"C_Cpp.default.systemIncludePath": [
    "/usr/local/include",
    "/usr/include",
    "...../......./....../.......",
    "...../......",
    "..."                          <- kein Komma!
]

Dabei müssen alle Werte ausser dem letzten hinter sich ein Komma haben. (Ich erwähne das explizit, weil bei Umsortierung der Zeilen leicht das Komma an eine andere Stelle rutscht. Visual Studio Code sagt dann nicht viel dazu, es funktioniert einfach nicht so wie man denkt.

Offline

#8 29.04.2020 21:42:04

LotosKaiser04
Mitglied

Re: Visual Studio Code #include-fehler

Leider funktoniert es nach dem Angeben des Pfads immer noch nicht woran kann das den liegen?
Er gibt die ganze Zeit aus:

#include-Fehler erkannt. Aktualisieren Sie Ihren includePath. Wellenlinien sind für diese Übersetzungseinheit (/home/alexander/Workspace/main.cpp) deaktiviert.

Und:

Die Datei "Quelle" kann nicht geöffnet werden: "bits/c++config.h". (dependency of "iostream")

Meine json lautet :

{
    "workbench.colorTheme": "Atom One Dark",
    "cmake.configureOnOpen": true,
    "explorer.confirmDelete": false,
    "C_Cpp.default.systemIncludePath": ["/usr/locale/include", "/usr/include"]
}

Offline

#9 30.04.2020 07:33:11

T.M.
Mitglied

Re: Visual Studio Code #include-fehler

Ich hatte erwähnt, dass Du alle die include-Pfade hinschreiben musst, die Dein Compiler erwartet. Das sind weit mehr als die beiden, die ich als Beispiel angegeben habe. Es sind sicher zehn oder sogar 15, teils lange, das hängt u.a. davon ab, was Du bei Dir installiert hast. Ich hab auch gesagt, dass es dauert, bis man die alle zusammen hat.

Drum sagte ich ja, man könne diese Pfade ermitteln, indem man den Compiler danach fragt. Ich hab gestern versucht, das für Dich herauszukriegen, bin aber gescheitert. Die Option -print-search-dirs listet leider nur den Suchpfad für lib-Dateien:

libraries: =/usr/lib/gcc/x86_64-pc-msys/9.3.0/:/usr/lib/gcc/x86_64-pc-msys/9.3.0/../../../../x86_64-pc-msys/lib/x86_64-pc-msys/9.3.0/:/usr/lib/gcc/x86_64-pc-msys/9.3.0/../../../../x86_64-pc-msys/lib/../lib/:/usr/lib/gcc/x86_64-pc-msys/9.3.0/../../../x86_64-pc-msys/9.3.0/:/usr/lib/gcc/x86_64-pc-msys/9.3.0/../../../../lib/:/lib/x86_64-pc-msys/9.3.0/:/lib/../lib/:/usr/lib/x86_64-pc-msys/9.3.0/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-msys/9.3.0/../../../../x86_64-pc-msys/lib/:/usr/lib/gcc/x86_64-pc-msys/9.3.0/../../../:/lib/:/usr/lib/

Das sind (hier auf meinem MinGW-System) 13 Einzelpfade, wenn ich richtig gezählt habe, da erhältst Du ungefähr eine Vorstellung. Genau so in der Art sieht auch der Suchpfad für header aus, wahrscheinlich ist er noch einiges länger.

Du überbewertest allerdings sehr wahrscheinlich dieses Problem. Du musst Dir klarwerden, worum es geht: Es liegt kein schwerer Fehler vor, insbesondere keiner, der Dich am Compilieren hindert. Visual Studio Code findet ein paar header nicht. Es zeigt aber sehr wohl Deine Dateien richtig an, führt IntelliSense durch, kann Referenzen auflösen, Deklarationen finden usw. Du kannst ohne Weiteres gut damit arbeiten und es bringt Nutzen. Was viel wichtiger ist, ist, dass Dein Compiler die erforderlichen header findet. Und das wird er sehr wahrscheinlich.

Offline

#10 30.04.2020 08:05:07

Gerry_Ghetto
Mitglied

Re: Visual Studio Code #include-fehler

Ich denke mal mit

echo | gcc -E -Wp,-v -
echo | cpp -xc++ -Wp,-v

sollte man schon einiges finden.

Offline

#11 30.04.2020 11:20:57

LotosKaiser04
Mitglied

Re: Visual Studio Code #include-fehler

Ich danke euch für eure viele Hilfe ich habe heute Arch nochmla neu Aufgesetzt weil ich treiber Probleme hatte.
Und dann hab ich Visual Studio Code neuinstalliert und alle ging.
Aber trotzdem vielen DANK!

Offline

#12 30.04.2020 14:57:58

T.M.
Mitglied

Re: Visual Studio Code #include-fehler

Gerry_Ghetto schrieb:

Ich denke mal mit

echo | gcc -E -Wp,-v -
echo | cpp -xc++ -Wp,-v

sollte man schon einiges finden.

Yeah, danke!

Offline

#13 30.04.2020 16:49:59

T.M.
Mitglied

Re: Visual Studio Code #include-fehler

Der Vollständigkeit halber, wenn ich auf meiner Maschine folgende Einstellung mache, funktioniert es tatdellos:

"C_Cpp.default.systemIncludePath": [
	"/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/include",
	"/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../include/c++/9.3.0",
	"/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../include/c++/9.3.0/x86_64-pc-linux-gnu",
	"/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward",
	"/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include",
	"/usr/local/include",
	"/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include-fixed",
	"/usr/include",
	"/usr/include/mysql"
]

(Die oberen Pfade gehen natürlich kürzer, aber so kommen sie von cpp.) Insbesondere kannste auf irgendein Symbol gehen, z.B. std::string, F12 drücken und es findet und öffnet den richtigen header und springt auf die richtige Zeile.

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums