Qt プログラムが突然終了する
プログラムを実行すると画面も表示されずに終了する。
Starting path\to\helloworld.exe... プログラムが突然終了しました。 path\to\helloworld.exe crashed.
/path/to/helloworld を起動中... プログラムが突然終了しました。 /path/to/helloworld がクラッシュしました
デバッグ実行すると次のメッセージが表示される。
During startup program exited with code 0xc0000139
原因1
C:\Windows\SysWOW64 に、他の libstdc++-6.dll がインストールされていたため。
解決方法1
ビルドに使った libstdc++-6.dll を実行ファイルと同じフォルダーにコピーする。
原因2
QApplication の派生クラスのコンストラクタの第1引数を “int argc” にしていたため。
解決方法2
“int &argc” に修正する。(QApplication の第1引数は “int &argc")
■
問題
.bbappend でファイルを追加した後、bitbake を実行したら次のエラーが発生した。
ERROR: Function failed: Fetcher failure for URL: 'file://<ファイル名>'. Unable to fetch URL from any source.
原因
ファイルのパスが探索パスに含まれていないため。
解決方法
ファイルが置いてあるフォルダーのパスを探索パスに追加する。 レシピに次の行を追加する。
- フォルダー名=レシピ名の場合
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
- フォルダー名が “files” の場合
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
ビルド前にプログラムの実行を停止する
Qt Creator でプログラム実行中にビルドを実行すると次のエラーが発生する。
:-1: エラー: cannot open output file debug\hello.exe: Permission denied collect2.exe:-1: エラー: error: ld returned 1 exit status
プログラムを終了して、ビルドし直すと解消するが、面倒なので自動的に終了させるようにする。
次のバッチファイルを作成する。
taskkill.bat
taskkill.exe /im %1 /t 2>nul exit 0
プロジェクトのビルドステップの Make ステップの前に独自プロセスステップを追加する。
- コマンド: taskkill.bat
- 引数: <実行ファイル名>
- 作業ディレクトリー: <taskkill.bat のフォルダーパス>
PlainTextEdit ウィジェットのテキストを取得するメンバー関数
toPlainText() で取得する。初見殺し。
ui->plainTextEdit->toPlainText();
textChanged() と textEdited() の違い
textChanged() …テキストが変更されると emit される。
textEdited() …ユーザー操作によりテキストが変更されると emit される。
QSqlDatabase: QMYSQL driver not loaded
QMYSQL プラグインのロードに失敗する。ロード時に次のメッセージが表示される。
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
原因
qsqlmysql.dll が libmysql.dll を参照できなかったため。
解決方法
環境変数 PATH に libmysql.dll のフォルダーパス “C:\Program Files (x86)\MySQL\MySQL Server 5.7\lib” を追加する。