3

クロスプラットフォームのQtオーディオアプリケーションを開発しています。Linuxでは、アプリケーションは問題なく実行されますが、Windowsでは、QtCreatorから起動したときにアプリケーションは実行されません。

リリース構成で(またはデバッグなしで)実行する場合、QtCreatorは単に次のように言います。

「プログラムは予期せず終了しました。」

デバッグ構成(またはデバッグ)で実行すると、QtCreatorは次のように言います。

起動時にプログラムがコード0x0000135で終了しました。」

エラーのグーグルはまったく役に立たなかったので、アプリケーションに必要なすべての.exeと.dll(QtCoreなどのQtライブラリが含まれています)を空のディレクトリにコピーし、Linuxの場合と同様にアプリケーションを完全に実行することにしました。

したがって、これはWindowsがアプリケーションに必要なdllを見つけられないという問題だと思います。

この問題は、先週末、システムをWindows 8にアップグレードしたときに発生しました。以前は(Windows 7で)そのような問題はありませんでした。

ビルドパラメータ(ファイル.userに保存されている)の変更を伴わないソリューションを知っている人はいますか?

Linuxでアプリケーションをテストするとこのファイルが無効になるため、これを実行したくありません。また、そのバージョンを保持したくありません。

4

3 に答える 3

2

解決しました!

おそらくQtCreatorのバグです。

私のプロジェクトには、main.exe、core.dll、side.dll、external.dllの4つのサブプロジェクトがあります。

main.exe needs core.dll and side.dll
core.dll needs external.dll

main.exeに必要なのはcore.dllとside.dllだけなので、external.dllへの参照は追加していません。Qt Creatorは、その依存関係を検出し、それに応じてそれらを追加するのに十分賢いはずです(まあ、ついにこれはLinuxで起こることです)。

依存関係を正しく検出しないため、Qt Creatorからmain.exeを実行しようとすると、正しくPATH環境変数が作成されず、問題が発生します。

main.proファイルに次の行を追加して解決しました。

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../external/release/ -lexternal
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../external/debug/ -lexternal

#INCLUDEPATH += $$PWD/../external
win32: DEPENDPATH += $$PWD/../external

注:理解を深めるために、モジュール名を変更しました。

于 2012-11-25T20:25:52.820 に答える
1

実行環境のパスにQt-DLLのパスが含まれなくなったためだと思います。プロジェクト設定に移動し、「デバッグと実行」設定でPATH変数を確認します。私の場合、例:C:\ QtSDK \ mingw \ bin; C:\ QtSDK \ Desktop \ Qt \ 4.8.1 \ mingw \ lib; .. ..他のパス...

よろしく。

于 2012-11-24T22:53:46.730 に答える
0

問題は間違いなくいくつかの不足しているdllにあります!dllを実行可能ファイルのあるフォルダー(たとえばpng3.dll)に直接入れて、qtクリエーターから実行すると、実行されることがわかりました。私がしたこと:出力ディレクトリ(実行可能ファイルがある場所)で実行可能ファイルを開く(ダブルクリック)と、Windowsは欠落しているdll名を表示します。それらを見つけて、フォルダに直接コピーします。次に、Qtクリエーターからアプリを実行します!dllが適切であれば成功するはずです。その後、execフォルダーからdllを削除し、qtクリエーターを介してアプリを実行してエラーが再度スローされるようにします。このようにして、不足しているdllを見つけます。その後、「ビルド環境」のqtクリエーター「プロジェクト」設定のdllへのパスを「パス」変数に追加します。

于 2018-01-25T16:11:06.947 に答える