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;
}
고치다:
#include <iostream>
int main(int argc, char *argv[])
{
{
int i = 2;
std::cout << i << std::endl;
}
return 0;
}
기능들
대부분의 경우 필요한 헤더가 포함되지 않은 경우이 오류가 발생합니다 (예 :
#include <iostream>
없이std::cout
사용).
컴파일하지 않음 :
#include <iostream>
int main(int argc, char *argv[])
{
doCompile();
return 0;
}
void doCompile()
{
std::cout << "No!" << std::endl;
}
고치다:
#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 ++ 호출 :
g++ -o main main.cpp -Llibrary/dir -lnameOfLib
또한 사용 된 모든 .cpp
파일을 컴파일하고 링크하는 것을 잊을 수도 있습니다 (functionsModule.cpp는 필요한 함수를 정의합니다).
g++ -o binName main.o functionsModule.o
치명적인 오류 : *** : 해당 파일이나 디렉토리 없음
컴파일러가 파일을 찾을 수 없습니다 (소스 파일은 #include "someFile.hpp"
).
qmake :
INCLUDEPATH += dir/Of/File
cmake :
include_directories(dir/Of/File)
g ++ 호출 :
g++ -o main main.cpp -Idir/Of/File
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow