Visual Studio 2012 コンパイラで Qt 5.1.1 を使用しています。C++ バックエンドを持つ Quick 2 アプリケーションがあります。Qt Creator でアプリケーションを実行しているときは、すべて問題ないように見えます。しかし、Qt Creator の外部でアプリケーションを起動しようとすると、クラッシュします。
私のフォルダにはすべての Qt*.dll があり、D3DCompiler_46.dll もあります。
C++ 部分から QML ファイルのいくつかのファイルにアクセスしようとしましたが、Visual Studio デバッガーでクラッシュした後、クラッシュが null ポインター例外のように見えることがわかりました。
QObject *openButton = instanceRoot->findChild<QObject*>("openFileButton");
openButton->setProperty("enabled",QVariant(enabled));
すべてのリソースが qrc ファイルで宣言されており、.pro ファイルにも次のように含まれています。
RESOURCES += res.qrc
この記事では、すべての qml ファイルを exe ファイルに埋め込む必要があることを示しています。しかし、私はそうすべきではないと思います。
この問題を見つけて修正するにはどうすればよいですか?
UPD:これが私の主な機能です:
int main(int argc, char *argv[]) {
QGuiApplication a(argc, argv);
Q_INIT_RESOURCE(res);
QQuickView view;
Decrypter dec;
view.rootContext()->setContextProperty("Decrypter", &dec);
QObject::connect(view.engine(), SIGNAL(quit()), &a, SLOT(quit()));
view.setSource(QUrl("qrc:/PlayerGUI.qml"));
view.show();
QQuickItem *rootObject = view.rootObject();
Player *player = new Player(rootObject);
return a.exec();
}
UPD2: コメントの 2 人がコードの 1 つの文字列に混乱していました。
view.engine()->addImportPath("../QtAV/qml/");
それで、私はそれを削除しましたが、まだクラッシュしています(