QtCreator 빌드는 Collect2를 반환합니다.ld가 종료 상태 1을 반환했습니다.
-
18-09-2019 - |
문제
QtCreator에서 여러 다른 프로젝트를 빌드하는 동안 다음 빌드 오류가 발생했습니다.
collect2: ld returned 1 exit status
몇 가지 사항만 변경한 후에(빌드에서 중요한 내용을 변경해서는 안 됨) 이미 나타난 경우 사라지고, 없는 경우 나타납니다.
현재 학교 프로젝트 프로그램에서 rock03.cpp를 컴파일하려고 합니다.이는 빌드의 유일한 파일이며 main() 메서드를 갖습니다.방금 성공적으로 실행하고 일부 순서를 변경하기 위해 다시 돌아갔습니다. if()
이제 관련 경고가 두 개만 표시됩니다.
overriding commands for target 'rock03.o'
그리고
ignoring old commands for target 'rock03.o'
문제의 오류와 함께.
왜 이런 일이 일어나는지 아는 사람이 있나요?합리적인 확실성을 가지고 오류를 재현할 수 없는 것 같으며 QtCreator는 빌드하기 전에 어떤 것에 대해서도 불평하지 않습니다.
감사해요
해결책 10
"Compile Output"창을 확인하면 .pro 파일이 동일한 .cpp 파일을 두 번 연결하려고 시도한 것으로 나타났습니다.
다른 팁
유일한 메시지 오류가 링커와 관련된 메시지 오류 인 경우 프로그램이 여전히 실행 중이며 링커가 이진 파일에 액세스 할 수 없기 때문일 수 있습니다. 아직 실행중인 경우 응용 프로그램이 중지되었는지 확인하거나 죽여야합니다. QTCreator는 컴파일 전에 이전 실행이 중지되었는지 확인하지 않습니다.
헤더 파일에서 선언을 한 다음 CPP 파일에서 함수를 삭제하고 헤더에서 Deenleration을 삭제하는 것을 잊어 버리기 때문에 이것은 나에게 발생합니다. 예를 들어...
//header file
class CLASS : public Q_OBJECT
{
...
protected:
void mouseMoveEvent(QMouseEvent*);
}
//source file
void CLASS::mouseMoveEvent(QMouseEvent*e)
{
...
}
//I'll delete this, then forget to delete "void mouseMoveEvent(QMouseEvent*);" in the header file
컴파일러 출력은 오류로 오류로 얻는다면 실제로 도움이되지만 첫 번째 후보는 아마도 출력 프로그램을 열어 놓았으며 파일에 쓸 수 없다는 것입니다. 이와 같은 독방 수집 오류
이 오류는 링키지 문제로 인해 발생할 수 있습니다. 예를 들어, 'extern'지시문을 사용하여 헤더 파일에서 일부 정적 변수를 선언하는 것을 잊었습니다.
이는 기본 앱을 닫지 않을 때 발생합니다(따라서 출력 실행 파일은 계속 실행 중이지만 표시되는 창은 없음).예:
int main() {
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
이 앱은 기본 창을 닫으면 정상적으로 종료되지만 이 코드는
int main() {
QApplication a(argc, argv);
QDialog w;
w.exec();
return a.exec();
}
대화 상자를 닫을 때 앱이 닫히지 않습니다(적어도 저에게는).
해결책은 항상 기본 창을 만들고 닫는 것입니다.
제 경우에는 명확한 가상 기능을 선언했습니다.
void virtual Func(MouseEvent*); // Error.
void virtual Func(MouseEvent*) = 0; // Well!
제 경우에는 폴더 권한이 문제였습니다. "컴파일 출력"창을 확인하는 것은 문제가 무엇인지 정확히 찾는 데 중요합니다. (QTCreator는 그런 점에서 Visual Studio와 반대이므로 익숙해지기가 필요합니다.) 권한을 올바르게 설정하려고 시도했지만 그 후에는 작동하지 않은 것 같습니다. 결국 그림자 빌드를 비활성화 한 다음에갔습니다. "도구/옵션/빌드 및 실행/일반/프로젝트 디렉토리"및 "디렉토리"를 설정하십시오. ". 그런 다음 마침내 컴파일되었습니다. "그것은"QT 5.11의 KMAP2QMAP 프로젝트입니다.
누군가가 유용하다고 생각할 경우 내 2 센트입니다.
오류에 대한 더 많은 이유가있을 수 있습니다. 그러나 저에게는 클래스에서 사용되지 않은 슬롯을 제거 할 때 문제가 해결되었습니다.
나는 같은 문제가 있었다. 내 해결책은 - 모든 가상 함수와 모든 슬롯 선언을 구현하는 것입니다.