2009-01-24 51 views

Trả lời

28

Có các tiện ích sẽ thực hiện việc này cho bạn.

Trong quá khứ tôi đã sử dụng các công cụ MS (depends.exe) đi kèm với (tôi nghĩ) VB .:
https://msdn.microsoft.com/en-us/library/8kche8ah.aspx

và có này là cũng như:
http://dependencywalker.com/

và có lẽ là những người khác nữa.

+4

"depends.exe" được cài đặt với Visual Studio/VB/... và "depends.exe" mà người dùng có thể tải xuống từ http://dependencywalker.com/ là chính xác công cụ tương tự (chỉ các phiên bản khác nhau) . ;) –

8

Dependency Walker có thể giúp bạn xác định loại tệp .dll nào sẽ được tải.

+0

Chương trình GUI đẹp. 'Dependency Walker' cố gắng tìm các tệp DLL và các phụ thuộc phân cấp của chúng. – SuB

39

dumpbin là một công cụ mà đi kèm với VC++.

Để xem những gì dlls một chương trình sẽ nhập khẩu:

  • mở Visual Studio
  • Menu Item Tools | Visual Studio Command Prompt
  • cd vào thư mục chứa thực thi
  • dumpbin/người phụ thuộc whatever.exe
Dump of file whatever.exe 

File Type: EXECUTABLE IMAGE 

    Image has the following dependencies: 

    AIOUSB.DLL 
    sqlite3.dll 
    wxmsw293u_core_vc_custom.dll 
    wxbase293u_vc_custom.dll 
    KERNEL32.dll 
    ole32.dll 
    OLEAUT32.dll 
    MSVCP90.dll 
    MSVCR90.dll 

Để xem các chức năng gì (và DLL) nó sẽ nhập khẩu, sử dụng

C:\> dumpbin /imports whatever.exe 
+2

Tôi tin rằng nó nên là: dumpbin/dependents whatever.exe –

+1

/người phụ thuộc chỉ cho bạn thấy các DLL./ import cho bạn thấy các hàm * và * DLL. –

+0

Đây là câu trả lời hay nhất. Thật không may công cụ này chỉ hiển thị các tệp DLL được tải trực tiếp cho '.exe' không phải là tệp DLL mà tệp thực thi phụ thuộc vào chúng gián tiếp. – SuB

1

Có một công cụ tiện dụng được gọi là NDepend sẽ cung cấp cho bạn tất cả các phụ thuộc DLL.

+0

_'NDepend' là công cụ phân tích tĩnh cho mã được quản lý .NET'_. Vì vậy, nó chỉ hoạt động cho các ứng dụng .Net. – SuB

10

Chỉ cần đi tới dấu nhắc lệnh và nhập tasklist /m, bạn sẽ thấy danh sách tệp dll được chương trình cụ thể sử dụng.

+0

Vâng, điều này sẽ làm những gì bạn nói, tuy nhiên, nếu một quá trình khởi động thực thi, bạn sẽ không bao giờ tìm thấy từ dòng lệnh mà quá trình đã được bắt đầu bởi các tập tin thực thi, do đó bạn sẽ không biết tất cả các dll phụ thuộc của tập tin thực thi. – Fazi

2

Giải pháp cho Microsoft Net:

foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies()) 
{ 
    MessageBox.Show(a.Name); 
} 
11

mở cửa sổ lệnh và sau đó gõ lệnh dưới đây

tasklist/m/fi "imagename eq netbeans.exe"

Loại thay netbeans.exe bất cứ tên nào tên tệp exe của bạn.

+0

mẹo hay, mặc dù chỉ hoạt động cho tiến trình chạy. –

+0

tôi sử dụng này và nó không cho tôi danh sách đầy đủ của dlls sử dụng của nó, có một loạt các dlls crystalreports exe của tôi đang sử dụng nhưng tôi không thấy bất kỳ đề cập trong danh sách in thông qua lệnh đó. Bất kỳ ý tưởng? – user734028

Các vấn đề liên quan