なぜREGSVR32は明らかにそこにあるDLLを見つけられないのですか?


8

新しいWindows 2003 Serverにカスタムアプリケーションをインストールしています。いくつかのDLLを追加して登録する必要があり、それらをサーバーのC:\ WINDOWS \ System32フォルダーにコピーしました。これは、Windows NTおよび2000でアプリケーションを実行しているときは常にDLLがあった場所です。 。

しかし、私がそれらを使って登録しようとすると:

regsvr32 c:\ windows \ system32 \ nameoflibrary.dll

それは返します:

LoadLibrary("c:\windows\system32\nameoflibrary.dll") failed - 
The specified module could not be found.

ただし、DLLはそこにあります。私はそれを見ることができます。パスをWindowsエクスプローラーにコピーして実行しようとすると、DLLを実行できないことが通知されるので、DLLが存在することがわかります。DLLがVB5に組み込まれていることがマイナーな複雑さの1つですが、VB5ランタイムがサーバーにインストールされているため、これは問題になりません。

何か案は?


これは64ビットのWindows 2003サーバーですか?
jscott

いいえ、32ビットです。
Cyber​​herbalist

回答:


6

依存モジュールが欠落している可能性があります。getlasterrorコードを調べて、モジュールが見つからなかった理由を判別する必要があります。


うん。メインアプリケーションによってインストールされるはずのモジュールがインストールされませんでした。これが修正されると、2つのDLLが正しく登録されました。
Cyber​​herbalist

7

ジムBはおそらく正しいです。DependencyWalkerを取得し、{nameoflibrary.dll}をロードします。欠落している依存DLLが表示されます。


更新方法は、Visual StudioのbinディレクトリからDUMPBIN.EXEを使用することです:dumpbin /dependents <file.exe/dll>
HLK
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.