Cách xem Nội dung của thư viện Windows (* .lib)


181

Tôi có một tệp nhị phân - Thư viện tĩnh Windows (* .lib).
Có cách nào đơn giản để tìm ra tên của các hàm và giao diện của chúng từ thư viện đó không?

Một cái gì đó tương tự emfarelfdumpcác tiện ích (trên các hệ thống Linux)?


1
Lưu ý: Dấu nhắc lệnh cụ thể cho .NET đi kèm với các phiên bản Visual Studio nhưng không phải với phiên bản Express. Từ: social.msdn.microsoft.com/Forums/en-US/,
diễn ra

Câu trả lời:


199

Giả sử bạn đang nói về một thư viện tĩnh, DUMPBIN /SYMBOLShiển thị các hàm và đối tượng dữ liệu trong thư viện. Nếu bạn đang nói về một thư viện nhập khẩu ( .libđược sử dụng để chỉ các biểu tượng được xuất từ ​​DLL), thì bạn muốn DUMPBIN /EXPORTS.

Lưu ý rằng đối với các chức năng được liên kết với giao diện nhị phân "C", điều này vẫn không giúp bạn trả về các giá trị, tham số hoặc quy ước gọi. Thông tin đó hoàn toàn không được mã hóa .lib; bạn phải biết rằng trước thời hạn (thông qua các nguyên mẫu trong các tệp tiêu đề) để gọi chúng một cách chính xác.

Đối với các hàm được liên kết với giao diện nhị phân C ++, quy ước gọi và đối số được mã hóa trong tên đã xuất của hàm (còn được gọi là "tên xáo trộn"). DUMPBIN /SYMBOLSsẽ hiển thị cho bạn cả tên hàm "xáo trộn" cũng như bộ tham số được giải mã.


6
Cả / TRIỆU CHỨNG và / XUẤT KHẨU hiện không hoạt động. Tôi phải sử dụng / TẤT CẢ với một | nhiều ống hơn để xem tất cả các chức năng trong tệp .lib.
dùng5280911

100

Mở bảng điều khiển lệnh trực quan (Dấu nhắc lệnh của Visual Studio)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

hoặc là

lib /LIST openssl.x86.lib

hoặc chỉ mở nó bằng 7-zip :) đó là kho lưu trữ AR


19
Thủ thuật thú vị với 7-zip dường như có hai tệp .txt ở đó nghĩa là gì?
Damian

21

Tôi muốn một công cụ như ar t libfile.atrong unix.
Các cửa sổ tương đương là lib.exe /list libfile.lib.


4
Có lib sẽ (chỉ) hiển thị các tập tin obj; nó sẽ không hiển thị các chức năng và dữ liệu trong các tệp obj.
user34660

14

"dumpbin -exports" hoạt động cho dll, nhưng đôi khi có thể không hoạt động cho lib. Đối với lib, chúng ta có thể sử dụng "dumpbin -linkermember" hoặc chỉ "dumpbin -linkermember: 1".



13

DUMPBIN / XUẤT KHẨU Sẽ nhận được hầu hết thông tin đó và nhấn MSDN sẽ nhận phần còn lại.

Nhận một trong các gói Visual Studio; C ++


3

1) Mở Dấu nhắc lệnh dành cho nhà phát triển cho VS 2017 (hoặc bất kỳ phiên bản nào bạn có trên máy của mình) (Nó nên được đặt trong: Menu bắt đầu -> Tất cả chương trình -> Visual Studio 2017 (hoặc bất kỳ phiên bản nào bạn có trên máy của mình) -> Công cụ Visual Studio -> Dấu nhắc lệnh dành cho nhà phát triển cho VS 2017.

2) Nhập lệnh sau:

dumpbin /EXPORTS my_lib_name.lib


2

Giống như có thể thấy trong các câu trả lời khác, bạn sẽ phải mở Dấu nhắc lệnh dành cho nhà phát triển được cung cấp trong phiên bản Visual Studio để có dumpbin.exetrong đường dẫn thực thi của bạn. Nếu không, bạn có thể đặt các biến môi trường cần thiết bằng tay.

dumpbin /EXPORTS yourlibrary.libthường sẽ chỉ hiển thị một danh sách nhỏ các biểu tượng. Trong nhiều trường hợp, nó sẽ không hiển thị các chức năng mà thư viện xuất.

dumpbin /SYMBOLS /EXPORTS yourlibrary.libsẽ cho thấy các biểu tượng đó, nhưng cũng là một lượng cực lớn các loại symbos khác. Vì vậy, bạn phải lọc chúng, có thể bằng một đường ống đến findstr(nếu bạn muốn có một công cụ MS-Windows), hoặc grep.

Tìm kiếm Statictừ khóa bằng một trong những công cụ này dường như là một gợi ý tốt.

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.