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ự emfar
và elfdump
các tiện ích (trên các hệ thống Linux)?
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ự emfar
và elfdump
các tiện ích (trên các hệ thống Linux)?
Câu trả lời:
Giả sử bạn đang nói về một thư viện tĩnh, DUMPBIN /SYMBOLS
hiể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 /SYMBOLS
sẽ 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ã.
LIB.EXE là thủ thư cho VS
http://msdn.microsoft.com/en-us/l Library / 7ykb2k5f (VS.80) .aspx
(như libtool trên Unix)
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
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.exe
trong đườ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.lib
thườ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.lib
sẽ 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 Static
từ khóa bằng một trong những công cụ này dường như là một gợi ý tốt.