2016-03-21 18 views
1

私はQtアプリケーションを持っていますが、Qt Creatorから実行するとうまく動作します。ただし、手動で生成されたexeファイルをクリックすることで、それを実行する上で、私は次のエラーを取得する:exeを手動で実行すると実行時エラーが発生する

enter image description here

それは(私は、同じフォルダに置くことができる)のDDLを行方不明を求めるならば、私は理解するであろう。しかし、私はどのようにこれを(一般的に)処理するべきですか?

P.S.このアサーションをテストしようとする私のソースコードには何の行番号も与えていません。私もリリースモードを使用しようとしましたが、同じエラーです。

+0

Qt作成者とexe dirの環境の違いがある可能性があります。環境設定の詳細が必要です。 – lulyon

+1

"手動で"実行しても、そのエラーを適切に処理していないときに、あなたがやっていることが失敗する可能性があります。デバッグするには、「再試行」を押します。次に、コールスタックを調べて、これが起きたときに実行していた "あなたの"コードの行を探します。 – molbdnilo

+0

*デバッガにも試しましたか?あなたは最初にあなたがアクセスできないDLLに置かれますが、関数呼び出しスタックを歩くこともできますが、あなたがコードに到達するまでそれを行う必要があります。 –

答えて

0

私のqmlファイルが適切に展開されていなかったため、このエラーは主なqmlファイル名を格納する変数にある可能性があります。つまり、main.qmlがない場合は空の文字列にしないでください。だった)。正しいパスにqmlファイルを配置することで問題が解決されました。

また、@mitchは答えで指摘しているように、windeployqtを使用して依存関係を調べます。しかし、私はそれがすべての依存関係(例えば、他のコンパイラ関連のファイルのMSVCランタイム)をカバーしていないことにも気付きました。その場合は、依存関係ウォーカーを実行し、不足しているファイルを手動でexeと一緒に配置します。

+1

windeployqtはできるだけ多くのデプロイメントプロセスを処理しなければならないと思っています。何かが欠落している場合はおそらくバグです。その場合は、bugreports.qt.ioに報告してください。私は多くの人が手作業で部品を用意しなければならないと言っているが、開発者にそのフィードバックを伝えているとは思わない。 – Mitch

1

コードの問題点はわかりません。それを見つけるためにデバッガを使う必要があります。私はあなたがダウンロードしたあらかじめビルドされたQtライブラリはデバッグシンボルが付いていると思いますが、もしそうでなければ、Qtを構築して-force-debug-info configureオプションを使って得ることができます。

DebugViewを使用して、デプロイされたアプリケーションのデバッグ出力を確認することもできます。

しかし、一般的にQtに付属するwindeployqtツールを使用する必要があります。

Qt for Windows - Deploymentページには、QtアプリケーションをWindowsマシンに展開する方法についての詳細がありますが、必要なものはすべてwindeployqtで行う必要があります。

+0

私はあなたからのアイデアを得ました。それはうまくいっていましたが、もっと追加したいと思います。 –

+0

最初にやったことを簡単に説明してもらえますか? :) – Mitch

+0

確か:)これは私の考え方です。IsEmpty()assertはおそらくcozの中に何か '空'/'欠落'が入っています。だから私はexeと同じフォルダにqmlファイルを置くことで試してみると動作し始めた。どうやら私のqmlsは適切に配備されておらず、したがってこのエラーが発生しています。 QtCreatorで実行すると、このエラーは発生しません。 –

関連する問題