C++
Häufige Compile / Linker-Fehler (GCC)
Suche…
Fehler: '***' wurde in diesem Bereich nicht deklariert
Dieser Fehler tritt auf, wenn ein unbekanntes Objekt verwendet wird.
Variablen
Nicht kompilieren:
#include <iostream>
int main(int argc, char *argv[])
{
{
int i = 2;
}
std::cout << i << std::endl; // i is not in the scope of the main function
return 0;
}
Fix:
#include <iostream>
int main(int argc, char *argv[])
{
{
int i = 2;
std::cout << i << std::endl;
}
return 0;
}
Funktionen
Meistens tritt dieser Fehler auf, wenn der erforderliche Header nicht enthalten ist (z. B.
std::cout
ohne#include <iostream>
)
Nicht kompilieren:
#include <iostream>
int main(int argc, char *argv[])
{
doCompile();
return 0;
}
void doCompile()
{
std::cout << "No!" << std::endl;
}
Fix:
#include <iostream>
void doCompile(); // forward declare the function
int main(int argc, char *argv[])
{
doCompile();
return 0;
}
void doCompile()
{
std::cout << "No!" << std::endl;
}
Oder:
#include <iostream>
void doCompile() // define the function before using it
{
std::cout << "No!" << std::endl;
}
int main(int argc, char *argv[])
{
doCompile();
return 0;
}
Hinweis: Der Compiler interpretiert den Code von oben nach unten (Vereinfachung). Alles muss vor der Verwendung mindestens deklariert (oder definiert) werden .
undefinierter Verweis auf "***"
Dieser Linker-Fehler tritt auf, wenn der Linker kein verwendetes Symbol findet. Meistens passiert dies, wenn eine benutzte Bibliothek nicht damit verknüpft ist.
qmake:
LIBS += nameOfLib
cmake:
TARGET_LINK_LIBRARIES(target nameOfLib)
g ++ Aufruf:
g++ -o main main.cpp -Llibrary/dir -lnameOfLib
Man könnte auch vergessen, alle verwendeten .cpp
Dateien zu kompilieren und zu verlinken (FunctionsModule.cpp definiert die benötigte Funktion):
g++ -o binName main.o functionsModule.o
Schwerwiegender Fehler: ***: Keine solche Datei oder Verzeichnis
Der Compiler kann keine Datei finden (eine Quelldatei verwendet #include "someFile.hpp"
).
qmake:
INCLUDEPATH += dir/Of/File
cmake:
include_directories(dir/Of/File)
g ++ Aufruf:
g++ -o main main.cpp -Idir/Of/File