2

-plugin-sql-mysql-plugin-sql-sqliteフラグを使用してqtをビルドしました。libqsqlmysql.aとlibqsqlite.aがあります。私は自分のプロジェクトでqtを使用しています。しかし、私のビルドシステムはqtではなく、wafを使用しています。

mysqlデータベースとの接続を確立するアプリケーションを実行しようとすると、次の問題が発生します。

QSqlDatabase: QMYSQL driver not loaded                                                    
QSqlDatabase: available drivers:                                                          
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins      
INFO - Failed to connect to root mysql admin   

アプリをビルドするときに、コンパイラオプションに-lqsqlmysqlを追加しました。

qtドライバーがどのように機能するか、どのように、いつドライバーをロードしようとするかを説明してください。qtドライバー(dll、lib、....)とは何ですか?

4

2 に答える 2

3

あなたのアプリは、DLLからデータベースプラグインを動的にロードしようとしていると思います。このドキュメントは、データベースドライバDLLの適切な場所を見つけるのに役立ちます。または、アプリをプラグインに対して静的にリンクすることもできます。方法は次のとおりです。

于 2012-11-09T21:06:08.370 に答える
2

Qtにはいくつかのタイプのデータベース用のプラグインがあり、これらのプラグインは次の場所にあります。

$(QTDIR)/plugins/sqldrivers

まず、mysqlプラグインがそこに存在するかどうかを確認します。プラグインがない場合は、Qtを正しくコンパイルしなかったことを意味するため、MySqlプラグインを有効にしてQtを再コンパイルする必要があります。そうしないと、アプリケーションがmysqlプラグインを正しくロードしない可能性があります。Qtプラグインは、アプリケーションの初期化中、つまりQSqlDatabaseオブジェクトが初期化されるときに動的にロードされます。プラグインの場所が正しく設定されていない場合、プラグインはロードされません。次のQtAPIを使用して、アプリケーションがプラグインを見つける予定の場所を確認できます。

QStringList QCoreApplication::libraryPaths ()

アプリケーションが正しい場所を指していない場合は、次の呼び出しによってプラグインパスを設定できます。

void QCoreApplication::addLibraryPath ( const QString & path )

  または、実行可能ファイルが配置されているフォルダーにqt.confファイルを作成します。このファイルでは、次の方法でプラグインの場所を構成できます。

[Paths]
Plugins = %pluginlocation%
于 2012-11-09T22:42:25.220 に答える