2012-07-27 5 views
11

Qmgでいくつかの画像処理を行うアプリケーションをビルドしました。 IDE内部から実行するとうまく動作しますが、ディレクトリから起動しようとすると次のエラーがスローされます。QTビルドDLLプロシージャのエントリポイントエラーが発生しました

The procedure entry point [email protected]@[email protected]$$QAV0AAZ could not be located 
in the dynamic link library QtCore4.dll 

すべての点で、複数のバージョンのDLLがインストールされていることを指しています。ザイリンクスIDEがQtライブラリを使用しているのがわかりましたが、問題のDLLは同じバージョンです。私は本当にソフトウェアの男ではなく、ここで紛失している。

答えて

14

ライブラリのバージョンが同じであっても、互換性がない可能性があります。たとえば、STLサポートの有無、OpenGL、SQLドライバなどの異なる設定でコンパイルされました。

最も簡単な方法は、Qt SDKのパスをPATH環境変数の先頭に移動することです。この方法では、Qtライブラリが必要な実行ファイルを実行するたびに、QtCore4.dll、QtGui4.dll ...のコピーが実行可能ファイルのディレクトリに既に存在していない限り、SDKに同梱されているもの(PATHにあるもの)を読み込みます。このため、アプリケーションを再配布する場合は、そのディレクトリにライブラリを同梱する必要があります。

スタティックリンクですが、(L)GPLライセンスのもとでソースコードを提供する必要があります。

+0

QtCore4.dllとQtGui4.dllのコピーがディレクトリにあります。それがアプリケーションに必要なすべてのものです。静的リンクも機能しません。私はエンジニアにこれを投げ捨て、コマンドライン版を扱うように指示します。 –

+0

@Matt QtCore4.dllをアプリケーションのディレクトリに置いても、そのメッセージが表示されますか?おそらくそれは間違ったDLLです。おそらくあなたはQtCreatorのディレクトリからDLLを取り出したのですが、SDKのものと同じではありません(また、あなたのアプリケーションは後者にリンクされています)。 – Claudio

+0

Ran Dependency Walkerを実行し、dllをディレクトリにコピーしました。もともと私が使っていたDLLは何か分かりませんが、今は動作します。 –

-1

ライブラリを静的にリンクすると、問題は解決します。

+6

しかし、力をあなたは(L)GPLの下でリリースします。 – Claudio

0

DependencyWalkerを使用して、qtcore4.dllがロードされている場所をリストします。 私は同じ問題を抱えていた - DependencyWalkerは、qtcore4.dllがc:\ windows \ system32から読み込まれたことを私に見せてくれました - しかし、このフォルダにqtcore4.dllはありませんでした。

注意:Windows 7の場合64ビットc:\ windows \ SysWOW64はc:\ windows \ system32として「マップ」されています。 そして、このフォルダでdllを見つけました。私はdllの名前を変更し、問題は解決されました。

ここでこの答えを参照してください: Qt fresh Gui application crashes on startup, faulting at QtCore4.dll

関連する問題