0

特定の場所に存在する DLL があります。この DLL に依存する別のアプリケーションを作成します。実行時に DLL を参照するにはどうすればよいですか? DLL を exe と同じディレクトリに保持すると、動作します。しかし、それは私の場合ではありません。regsvr32.exe を使用してライブラリを読み込み、レジストリに登録しようとしました。しかし、それを実行してからexeを実行すると、それが取得されません。

いくつかのオプションを教えていただければ、それは素晴らしいことです。また、この場合、regsvr32.exe が機能しないのはなぜですか?

4

2 に答える 2

2

Regsvr32.exe は、インプロセス COM サーバーである特定の種類の DLL でのみ動作します。DllRegisterServer エントリポイントが見つからないと不平を言う場合、そのような DLL ではありません。

DLL を共有することは、16 メガバイトの RAM を搭載したマシンと、Windows 7 の "Gone Fishing" の壁紙のビットマップと同じくらいオペレーティング システム全体が大きかった前世紀には意味のあることでした。DLL の共有を防ぎます。したがって、恐ろしいDLL Hellから逃れることができます。特に COM サーバーの問題です。

ただし、ディレクトリを PATH 環境変数に追加する必要があります。SetDllDirectory() を呼び出すことにより、アプリケーションでもこれを行うことができます。DLL がどこにあるかを知っていると仮定すると、それは一般的ではありません。

最良の方法は、これをしないことです。DLLをコピーするだけです。

于 2012-09-11T02:10:28.453 に答える
0

DLL を見つけるためのルールは次のとおりです。

http://msdn.microsoft.com/en-us/library/7d83bc18(v=vs.80).aspx

PATH関連するディレクトリを環境変数に追加できることに注意してください。

ファイルが常に見つかる (またはアプリケーションから構成できる) 特定の場所がある場合は、 への呼び出しでパスを指定できますLoadLibrary

于 2012-09-11T02:12:17.237 に答える