C++
Общие ошибки компиляции / компоновщика (GCC)
Поиск…
Ошибка: «***» не было объявлено в этой области
Эта ошибка возникает, если используется неизвестный объект.
переменные
Не компиляция:
#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;
}
функции
В большинстве случаев эта ошибка возникает, если нужный заголовок не включен (например, с помощью
std::cout
без#include <iostream>
)
Не компиляция:
#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;
}
Или же:
#include <iostream>
void doCompile() // define the function before using it
{
std::cout << "No!" << std::endl;
}
int main(int argc, char *argv[])
{
doCompile();
return 0;
}
Примечание . Компилятор интерпретирует код сверху вниз (упрощение). Перед использованием все должно быть объявлено (или определено) .
неопределенная ссылка на `*** '
Эта ошибка компоновщика возникает, если компоновщик не может найти используемый символ. В большинстве случаев это происходит, если используемая библиотека не связана.
QMAKE:
LIBS += nameOfLib
CMake:
TARGET_LINK_LIBRARIES(target nameOfLib)
g ++ call:
g++ -o main main.cpp -Llibrary/dir -lnameOfLib
Также можно забыть компилировать и связывать все используемые .cpp
файлы ( .cpp
определяет нужную функцию):
g++ -o binName main.o functionsModule.o
Неустранимая ошибка: ***: Нет такого файла или каталога
Компилятор не может найти файл (исходный файл использует #include "someFile.hpp"
).
QMAKE:
INCLUDEPATH += dir/Of/File
CMake:
include_directories(dir/Of/File)
g ++ call:
g++ -o main main.cpp -Idir/Of/File