最近、Q_OBJECTマクロと自己定義シグナルを含むクラスのユニットテスト(googletestを使用)を作成しようとしました。Qtサブプロジェクトがmocファイルを見つけることができません
"error: undefined reference to `vtable for Class'"
と
"error: undefined reference to `vtable for Class::signal()'"
私のsrcサブプロジェクトがうまくコンパイル:テストサブプロジェクトには、次のリンカエラーが発生した(偶数/削除、すべてを再構築した後に)コンパイルされません。問題を研究した後、問題はコンパイラがテストサブプロジェクト用のmocファイルを生成しないということです。また、srcサブプロジェクトのmocファイルをテストに含めることに成功しませんでした。これをどうすれば解決できますか?ここで
は私の.PROファイルは、次のとおりです.PROファイル
TEMPLATE = subdirs
CONFIG(debug, debug|release) {
SUBDIRS += \
src \
test
test.depends = src
} else {
SUBDIRS += \
src
QMAKE_CXXFLAGS += -O2
}
src.pro
QT += core gui charts widgets
TARGET = Project name
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
HEADERS += \
...
SOURCES += \
...
test.pro
include(gtest_dependency.pri)
QT += core
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG += thread
CONFIG += qt
INCLUDEPATH += $$PWD/../src
DEPENDPATH += $$PWD/../src
HEADERS += \
... (only test headers)
SOURCES += \
... (test and src source files)
どのQtバージョンで作業していますか? Qt 6より前に廃止されたものはすべて無効にしました(まだリリースされていません...)これはあなたの問題に関連する可能性があります。 – Felix
@Felix私はQt 5.9を使用しています。その行を削除しても問題は解決されません。 – PMMA
'Class'のコードを見せてください – Felix