Qt Quick + CMake + 사용자 정의 QObject는 `vtable'에 대한 정의되지 않은 참조를 생성합니다.

용서하지 않는 예수

Qt Quick을 사용하여 파일 작업을 위한 작은 응용 프로그램을 만듭니다. build/폴더 에서 한 순간까지 모든 것이 작동했습니다.

rm -rf * 
cmake ..
make

그런 다음이 오류로 중지되었습니다 (목록이 거대합니다. 중요하지 않은 부분은 제외했습니다).

[100%] Linking CXX executable uint32_sort_gui

In function `LibController::~LibController()':
lib_controller.cpp:(.text+0x10): undefined reference to `vtable for LibController'
main.cpp.o: In function `int qmlRegisterType<LibController>(char const*, int, int, char const*)':

...

여기 내입니다 .hpp.cpp클래스의 파일 :

lib_controller.hpp

#include <QObject>
#include <QString>

class LibController : public QObject{
    Q_OBJECT
    Q_PROPERTY(decltype(getProgress) progress READ getProgress NOTIFY ProgressChanged)
    public:
        explicit LibController(QObject *parent = 0);
        ~LibController(); 

        double getProgress();

        Q_INVOKABLE
        void addFile(QString from_name, QString to_name);
        Q_INVOKABLE
        void sortFile();
    signals:
        void ProgressChanged();

    private:
        double current_progress;
        FileManager* file_manager;
};

lib_controller.cpp

#include "lib_controller.hpp"

LibController::~LibController(){
    delete file_manager;
}

double LibController::getProgress(){...}

void LibController::addFile(QString from_name, QString to_name){...}

void LibController::sortFile(){...}

메인.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlComponent>

#include "lib_controller.hpp"

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    // Registration of custom type
    qmlRegisterType<LibController>("com.sort.controller", 0, 1, "LibController");

    ...

    return app.exec();
}

그리고 내 CMakeLists.txt 구성.

이 문제에 대한 다른 질문을 읽었지만 청소 및 재구축이 도움이 되지 않았습니다(심지어 실수로 전체 프로젝트 폴더를 삭제했습니다).

문제가 지속되고 해결 방법을 이해하지 못합니다 ...

UPD:

다음은 전체 오류 메시지입니다.

UPD2:

LibController프로젝트에서 제외 하고 다시 컴파일하면 오류가 사라지지만 창이 표시되지 않습니다. 터미널에서 실행 중인 것을 볼 수 있지만 GUI가 표시되지 않습니다.

문제는 에 있는 것이 LibController아니라 다른 곳에 있는 것 같습니다.

테이바즈

cmake가 AUTOMOC를 실행할 수 있도록 소스 파일 목록에 헤더를 추가해야 합니다.

이 질문은 이미 여기에서 질문하고 답변했습니다. 헤더 파일의 위치를 ​​변경하면 CMake로 컴파일할 때 누락된 vtable 오류가 발생합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

vtable CMake 빌드 문제에 대한 Qt5 정의되지 않은 참조

Qt : 'vtable'에 대한 정의되지 않은 참조

`vtable for Msnger '에 대한 Qt 정의되지 않은 참조

Qt에서 "vtable에 대한 정의되지 않은 참조"를 해결하는 데 도움이되는 것은 없습니다.

Qt C ++ Q_OBJECT 오류 vtable에 대한 정의되지 않은 참조

생성자 및 소멸자에 대한 vTable에 대한 정의되지 않은 참조

자식의 .cpp에서 가상 함수를 구현하면 "`vtable for <child's class>`에 대한 정의되지 않은 참조"가 발생합니다.

Windows에서 CMake (mingw)를 사용하는 Qt5.14.0 정적의 정의되지 않은 참조

Number에 대한 vtable에 대한 정의되지 않은 참조

CMake를 사용하여 lib .a로 생성 된 메서드에 대한 정의되지 않은 참조

CONFIG + = staticlib로 Qt 앱을 빌드하면 "vtable에 대한 정의되지 않은 참조"오류가 발생합니다

`vtable에 대한 이상한 정의되지 않은 참조

OpenCV : cmake를 사용할 때`cv :: imread에 대한 정의되지 않은 참조

Arduino IDE를 사용하는 생성자에 대한 정의되지 않은 참조 오류

`vtable for CollidingMice '에 대한 정의되지 않은 참조보기

`vtable for MainWindow '에 대한 정의되지 않은 참조

vtable에 대한 정의되지 않은 참조

vtable 오류에 대한 정의되지 않은 참조는 최신 g ++ 컴파일러로 해결됩니까?

boost-python에 대한 링크는 PyCEGUI에서 정의되지 않은 참조를 생성합니다.

CMake를 사용하는 사용자 지정 .h 및 cpp에 대한 정의되지 않은 기호

Child 클래스에서 다른 Child 개체를 만들 수 없는 이유는 무엇입니까? ('vtable'에 대한 정의되지 않은 참조)

문서로 선언된 xDoc에 대한 참조는 PowerPoint VBA에서 "사용자 정의 유형이 정의되지 않음"을 생성합니다.

생성 된 코드에서 vtable에 대한 Apache Thrift 정의되지 않은 참조

생성자 문제에 대한 정의되지 않은 참조

C ++ : 생성자에 대한 정의되지 않은 참조

googletest에 cmake를 사용할 때`pthread_getspecific '에 대한 정의되지 않은 참조

CMake는 C 및 C ++ 정적 라이브러리를 연결하지 않습니다 (함수에 대한 정의되지 않은 참조).

C ++ 상속 문제 : 'vtable'에 대한 정의되지 않은 참조

cmake가 Windows에서 cygwin을 사용하여 netcdf에 대해 정의되지 않은 참조를 제공하는 이유는 무엇입니까?

TOP 리스트

  1. 1

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  2. 2

    std :: regex의 일관성없는 동작

  3. 3

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  4. 4

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  5. 5

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  6. 6

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  7. 7

    Ionic 2 로더가 적시에 표시되지 않음

  8. 8

    Seaborn에서 축 제목 숨기기

  9. 9

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  10. 10

    복사 / 붙여 넣기 비활성화

  11. 11

    ArrayBufferLike의 typescript 정의의 깊은 의미

  12. 12

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  13. 13

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  14. 14

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  15. 15

    PRNG 기간보다 순열이 더 많은 목록을 무작위로 섞는 방법은 무엇입니까?

  16. 16

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  17. 17

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  18. 18

    잘못된 구성 개체입니다. Webpack이 Angular의 API 스키마와 일치하지 않는 구성 개체를 사용하여 초기화되었습니다.

  19. 19

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  20. 20

    R의 마침표와 숫자 사이에 문자열 삽입

  21. 21

    Assets의 BitmapFactory.decodeStream이 Android 7에서 null을 반환합니다.

뜨겁다태그

보관