Tại sao REGSVR32 không tìm thấy một DLL rõ ràng ở đó?


8

Tôi đang cài đặt một ứng dụng tùy chỉnh trên Windows 2003 Server hoàn toàn mới. Một vài DLL cần được thêm và đăng ký và tôi đã sao chép chúng vào máy chủ trong thư mục C: \ WINDOWS \ System32 - đó là nơi chúng luôn tồn tại khi chúng ta có ứng dụng chạy trên Windows NT và 2000 .

Tuy nhiên, khi tôi cố gắng đăng ký chúng bằng cách sử dụng:

bộ đệm c: \ windows \ system32 \ nameofl Library.dll

Nó trả lại:

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

DLL là tuy nhiên ngay tại đó. Tôi có thể thấy nó. Nếu tôi sao chép đường dẫn vào Windows Explorer và cố gắng chạy nó, nó sẽ cho tôi biết rằng tôi không thể chạy DLL, vì vậy tôi biết nó ở đó. Một phức tạp nhỏ là các DLL được xây dựng trong VB5 - nhưng thời gian chạy VB5 được cài đặt trên máy chủ, vì vậy đây không phải là vấn đề.

Có ý kiến ​​gì không?


Đây có phải là máy chủ Windows 2003 64 bit không?
jscott

Không, đó là 32-bit.
Cyberherbalist

Câu trả lời:


6

Nó có thể là một mô-đun phụ thuộc bị thiếu. Bạn cần xem mã getlasterror để xác định lý do tại sao mô-đun không được tìm thấy.


Vâng. Một mô-đun được cho là được cài đặt bởi ứng dụng chính đã không được cài đặt. Một khi điều này được sửa, hai DLL đăng ký chính xác.
Cyberherbalist

7

Jim B. có lẽ đúng. Nhận DependencyWalker và tải {nameofl Library.dll} - nó sẽ cho bạn thấy DLL phụ thuộc nào bị thiếu.


Phương pháp cập nhật là sử dụng dumpbin.exe từ thư mục bin của Visual Studio:dumpbin /dependents <file.exe/dll>
hLk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.