それを使用する前に、DLLの存在を決定します
-
20-09-2019 - |
質問
Visual C ++ 2008 Express Editionを使用します。私は、またはターゲット・システム上に存在しない場合がありますDLLのインポートライブラリ(.lib
)と私のアプリケーションをリンクしています。あなたが尋ねる前に:。私は自分のアプリケーションでDLLを配布することはできません。
私はDLLから関数を呼び出すようDLLは、すぐに、存在しない場合には(ただし、早く!)、私は
のようなメッセージが表示されますこのアプリケーションはSomeLibrary.dllが見つからなかったため、起動に失敗しました。再インストールこの問題を解決するアプリケーションを。
、アプリケーションがDLLが存在しないことを検出し、単にそれに依存して機能を無効にしていることである私が代わりに発生します。私はLoadLibrary
、それが成功したかどうかを確認するために電話をかけることができますが、私は、これは十分であるかどうかはわかりません。たぶん、インポートライブラリは、舞台裏で多くの作業をしますか?
シンプルLoadLibrary
コールは十分ですか?ない場合は、他に何をする必要がありますか?これでも行うことができますか?
の の更新:もちろん私はLoadLibrary
を使用することができ、その後、私が使用したい機能ごとにGetProcAddress
。しかし、それは面倒だし、私はそれを避け、代わりに単に提供インポートライブラリを使用することを期待していた。
解決
このはDELAYLOADリンカオプションが何のためにあるのかですが、私はExpressエディションはそれをサポートしているかどうかわからない。
他のヒント
いいえ、LoadLibrary()
は正確に何をしたいです。それを使用する唯一の結果は、あなたが成功したDLLをロードするとき、DLLに関数ポインタを設定するの面倒ですが、そのためのプロセスは、ネット上のどこかによく覆われています。