Q_OBJECT 사용 시 'vtable에 대한 정의되지 않은 참조' 오류
링커가 찾을 수 없는 경우 "'vtable에 대한 정의되지 않은 참조'" 오류가 발생합니다. QObject에서 상속되고 Q_OBJECT 매크로를 선언하는 클래스에 대한 가상 함수 테이블(vtable). 이 오류는 여러 가지 이유로 발생할 수 있습니다.
가능한 원인:
-
MOC 단위 누락: MOC(Meta-Object Compiler) QObject 관련 기능의 구현을 포함하는 별도의 단위 파일을 생성합니다. MOC에서 생성된 유닛이 연결 프로세스에 포함되어 있는지 확인하세요.
-
구현 파일의 클래스 선언: 구현 파일이 아닌 별도의 헤더 파일에 클래스 선언을 배치합니다. 빌드 시스템이 MOC 처리를 위해 구현 파일을 검색하지 않을 수 있습니다.
-
qmake 호출 누락: Qmake는 MOC에 필요한 빌드 규칙을 생성합니다. 클래스가 처음에 Qt 메타 객체 시스템에 속하지 않은 경우 qmake를 다시 실행하여 타임스탬프를 업데이트하고 실행을 트리거합니다.
해결책:
이 문제를 해결하려면 다음 단계를 따르세요.
- 클래스 선언을 별도의 헤더 파일로 이동하세요.
- Qt Creator의 프로젝트 컨텍스트 메뉴에서 "qmake 실행"을 실행하거나 수동으로 실행하세요. 프로젝트 파일의 타임스탬프를 업데이트하여 qmake 호출을 강제합니다.
- 생성된 MOC 단위가 연결 프로세스에 포함되어 있는지 확인하세요.
이러한 조치는 'vtable에 대한 정의되지 않은 참조' 오류를 제거해야 합니다. 코드가 성공적으로 컴파일되도록 하세요.
위 내용은 Q_OBJECT를 사용할 때 \'\'vtable에 대한 정의되지 않은 참조\'\' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!