2011-05-12 12 views
0

私はこの概念を少し新しくしており、実行時にライブラリをロードする際にいくつか問題があります。私が使用している開発マシンでは、ライブラリが正しくロードされているように見えますが、プログラムは常に正しく動作しますが、このプログラムをコンパイルして、必要なDLLを持つ別のコンピュータに移動するとロードできません。私はこれが起こっている主な理由は、ロードされていないDLLが、他のほとんどのコンピュータには存在しないC:\ windows \ system32のようなシステム上のフォルダにあるからだと思う。DLLをC++プログラムにリンクするQTCreator

私の質問は、私が必要とする機能を備えたカスタムDLLを提供し、それをプログラムに同梱すれば、どのようにしてQTCreatorで正しくリンクすることができますか?私は-lと-Lフラグの組み合わせ(例:-llibname -LC:\ path \ to \ where \ dll \ would \ be)を試しましたが、これはトリックを行うようには見えません。もう一つの驚くべきことは(私にとってはとにかく)、プログラムを実行するためにDLLが必要になったとしても、プログラムはまだ他のコンピュータを起動しているということです。

私はこれについて読むことができる助言やチュートリアルがあれば、とても感謝しています。

答えて

0

まず、ロードするためにhow Windows finds DLLsを読んでください。

第2に、そのプロセスの仕組みがわかったら、他のマシンで実行したときに問題が消えるように、アプリケーションでDLLを出荷することを検討できます。サードパーティのDLLであれば、その権利を持っていることを確認する必要があります。

第3に、Windows dependency walker toolは、実行時にDLL負荷の問題を診断するのに非常に優れています。 .exeをロードしてF7キーを押してプロファイリングを開始してください。アプリケーションがロードしたすべてのDLLとその場所を表示します。

最後に、私はQTCreatorを知らないが、私はあなたがする必要があるすべては右スイッチと.libファイル(およびthis link-Lは、FWIW正しいスイッチであることを示唆している)、それを渡していることを想像するだろう。