Nicht qmlRegisterType Arbeit
Ich habe festgestellt, dass einige Beispiele von qmlRegisterType über das internet, aber kann einfach nicht damit es funktioniert. Ich erstelle ein neues Qt Quick 2-Projekt, und fügen Sie folgenden Inhalt:
Dies ist meine .pro Datei:
#Add more folders to ship with the application, here
folder_01.source = qml/testlib
folder_01.target = qml
DEPLOYMENTFOLDERS = folder_01
#Libraries
QT += core gui widgets
#Additional import path used to resolve QML modules in Creator's code model
QML_IMPORT_PATH =
#Header files
HEADERS += main.hpp
#The .cpp file which was generated for your project. Feel free to hack it.
SOURCES += main.cpp
#Installation path
#target.path =
#Please do not modify the following two lines. Required for deployment.
include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
qtcAddDeployment()
Dies ist mein code-Datei (main.cpp):
#include <QtQml>
#include <QtWidgets/QApplication>
#include "qtquick2applicationviewer.h"
//test class
class TestClass:public QObject {
Q_OBJECT
public:
TestClass(QObject* parent=0):QObject(parent){}
public slots:
void test() {
qDebug("test!");
}
};
//entry point
int main(int argc, char *argv[]) {
//create application
QApplication app(argc, argv);
//register custom qml component
qmlRegisterType<TestClass>("testlib",1,0,"TestClass");
//create and show qml viewer
QtQuick2ApplicationViewer viewer;
viewer.setMainQmlFile(QStringLiteral("qml/testlib/main.qml"));
viewer.showExpanded();
//back to OS
return app.exec();
}
Dies ist mein QML-Datei (main.qml):
import QtQuick 2.0
import testlib 1.0
Rectangle {
TestClass {
id:testobj
}
Component.onCompleted: {
testobj.test();
}
}
Aber ich sehe mehrere linking-Fehler:
- undefined reference to `vtable for TestClass'
- undefined reference to `TestClass::staticMetaObject'
- undefined reference to `TestClass::metaObject() const'
- undefined reference to `TestClass::qt_metacast(char const*)'
- undefined reference to `TestClass::qt_metacall(QMetaObject::Call, int, void**)'
Bin ich mit Qt 5.2.1 Lieferumfang MinGW 4.8 stabil. Diese Fehler bedeuten, der linker nicht finden können, library-Dateien, die Implementierungen von Methoden enthalten (oben angegeben). Was ist passiert? Kann nicht kompiliert werden, die auf Qt 5 aber ok, die auf Qt 4?
Posten Sie Ihre
Ja, posten Sie Ihre Projekt-Datei und einer einfachen Testfall mit full-source-code reproduzieren Sie das Problem, bitte.
ich habe soeben das detaillierte code, pls nehmen einen Blick
Hinzugefügt alle codes
.pro
- Datei, und stellen Sie sicher, dass Sie getan haben, eine komplette Reinigung und neu erstellen.Ja, posten Sie Ihre Projekt-Datei und einer einfachen Testfall mit full-source-code reproduzieren Sie das Problem, bitte.
ich habe soeben das detaillierte code, pls nehmen einen Blick
Hinzugefügt alle codes
InformationsquelleAutor jondinham | 2014-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweise zu Zusammenstellung mit Qt:
Hinweise zum erstellen einer custom QML-Komponente (hier genannt 'CustomCom'):
Beispiel-header code:
Beispiel-source-code:
Beispiel QML:
Lösung für die Frage (mit Blick auf 'Undefined reference to vtable'):
Das problem wurde durch die Verwendung von master-header-Datei. Setzen Sie die #include - (s) nur bei Bedarf löst das problem.
InformationsquelleAutor jondinham
Den ersten nicht nennen übergeordneten contructor
oder besser
Sekunde, wo Sie den Aufruf der qmlRegister? Wenn bin ich im Recht, Sie müssen sich registrieren, geben Sie, bevor Sie es verwenden, so, bevor QQmlEngine load source-codes von qml-Datei.
ich habe gerade alle codes in Frage
InformationsquelleAutor DragonLich
Ich hab das gleiche problem und habe es gelöst, indem Sie einfach die header-Datei (
TestClass.hpp
in deinem Fall) in die.pro
- Datei wie folgt:Garantieren moc finden. Und durch die Art und Weise,
.h
Dateien sind auch OK.InformationsquelleAutor Jason Jiang