Mengapa REGSVR32 tidak menemukan DLL yang jelas ada di sana?

8

Saya menginstal aplikasi khusus pada Windows 2003 Server baru. Beberapa DLL perlu ditambahkan dan didaftarkan, dan saya telah menyalinnya ke server di folder C: \ WINDOWS \ System32 - di mana mereka selalu berada ketika kami memiliki aplikasi yang berjalan pada Windows NT dan 2000 .

Namun, ketika saya mencoba mendaftar mereka menggunakan:

regsvr32 c: \ windows \ system32 \ nameoflibrary.dll

Itu memberi kembali:

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

Namun DLL ada di sana. Saya dapat melihatnya. Jika saya menyalin lintasan ke Windows Explorer dan mencoba menjalankannya, ini memberitahu saya bahwa saya tidak dapat menjalankan DLL, jadi saya tahu itu ada di sana. Salah satu komplikasi kecil adalah bahwa DLL dibangun di VB5 - tetapi runtime VB5 diinstal pada server, jadi ini seharusnya tidak menjadi masalah.

Ada ide?

Cyberherbalist
sumber
Apakah ini server Windows 2003 64-bit?
jscott
Tidak, ini 32-bit.
Cyberherbalist

Jawaban:

6

Bisa jadi modul dependen tidak ada. Anda perlu melihat kode getlasterror untuk menentukan mengapa modul tidak ditemukan.

Jim B
sumber
Ya. Modul yang seharusnya diinstal oleh aplikasi utama tidak dapat diinstal. Setelah ini diperbaiki, kedua DLL terdaftar dengan benar.
Cyberherbalist
7

Jim B. mungkin benar. Dapatkan DependencyWalker dan muat {nameoflibrary.dll} - ini akan menunjukkan kepada Anda DLL dependen mana yang hilang.

DougN
sumber
Metode yang diperbarui adalah dengan menggunakan dumpbin.exe dari direktori bin Visual Studio:dumpbin /dependents <file.exe/dll>
hLk