Cara Melihat Isi Perpustakaan Windows (* .lib)

181

Saya memiliki file biner - Windows static library (* .lib).
Apakah ada cara sederhana untuk mengetahui nama fungsi dan antarmuka mereka dari perpustakaan itu?

Sesuatu yang mirip dengan emfardan elfdumputilitas (pada sistem Linux)?

Nick Borodulin
sumber
1
Catatan: Prompt perintah khusus untuk .NET dilengkapi dengan edisi Visual Studio tetapi tidak dengan edisi Express. Dari: social.msdn.microsoft.com/Forums/en-US/…
isgoed

Jawaban:

199

Dengan asumsi Anda berbicara tentang perpustakaan statis, DUMPBIN /SYMBOLSmenunjukkan fungsi dan objek data di perpustakaan. Jika Anda berbicara tentang perpustakaan impor (yang .libdigunakan untuk merujuk simbol yang diekspor dari DLL), maka Anda menginginkannya DUMPBIN /EXPORTS.

Perhatikan bahwa untuk fungsi yang terhubung dengan antarmuka biner "C", ini masih tidak akan membuat Anda mengembalikan nilai, parameter, atau konvensi pemanggilan. Informasi itu tidak dikodekan .libsama sekali; Anda harus tahu sebelumnya (melalui prototipe dalam file header, misalnya) untuk memanggilnya dengan benar.

Untuk fungsi yang dihubungkan dengan antarmuka biner C ++, konvensi pemanggilan dan argumen dikodekan dalam nama fungsi yang diekspor (juga disebut "nama mangling"). DUMPBIN /SYMBOLSakan menunjukkan Anda kedua nama fungsi "rusak" dan juga set parameter yang didekodekan.

Tim Lesher
sumber
6
Baik / SIMBOL dan / EKSPOR tidak berfungsi saat ini. Saya harus menggunakan / ALL dengan pipa | lebih untuk melihat semua fungsi dalam file .lib.
user5280911
100

Buka konsol perintah visual (Visual Studio Command Prompt)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

atau

lib /LIST openssl.x86.lib

atau cukup buka dengan 7-zip :) ini adalah arsip AR

Tanguy
sumber
19
Trik keren dengan 7-zip sepertinya ada dua file .txt di sana apa artinya?
Damian
21

Saya ingin alat seperti ar t libfile.adi unix.
Setara dengan windows lib.exe /list libfile.lib.

lgwest
sumber
4
Ya lib akan (hanya) menampilkan file obj; itu tidak akan menampilkan fungsi dan data dalam file obj.
user34660
14

"dumpbin -exports" berfungsi untuk dll, tetapi kadang-kadang mungkin tidak berfungsi untuk lib. Untuk lib kita dapat menggunakan "dumpbin -linkermember" atau hanya "dumpbin -linkermember: 1".

jujur
sumber
13

DUMPBIN / EKSPOR Akan mendapatkan sebagian besar informasi itu dan memukul MSDN akan mendapatkan sisanya.

Dapatkan salah satu paket Visual Studio; C ++

Jim
sumber
3

1) Buka Prompt Perintah Pengembang untuk VS 2017 (atau versi apa pun yang Anda miliki di komputer Anda) (Itu harus berada di bawah: Start menu -> Semua program -> Visual Studio 2017 (atau versi apa pun yang Anda miliki di mesin Anda) -> Alat Visual Studio -> Prompt Perintah Pengembang untuk VS 2017.

2) Masukkan perintah berikut:

dumpbin /EXPORTS my_lib_name.lib

pengguna3292568
sumber
2

Seperti itu dapat dilihat di jawaban lain Anda harus membuka Command Prompt Pengembang yang ditawarkan dalam versi Visual Studio Anda agar ada dumpbin.exedi jalur eksekusi Anda. Jika tidak, Anda dapat mengatur variabel lingkungan yang diperlukan dengan tangan.

dumpbin /EXPORTS yourlibrary.libbiasanya hanya akan menampilkan daftar simbol. Dalam banyak kasus, ini tidak akan menunjukkan fungsi ekspor perpustakaan.

dumpbin /SYMBOLS /EXPORTS yourlibrary.libakan menunjukkan simbol itu, tetapi juga jumlah symbos lainnya yang sangat besar. Jadi, Anda harus menyaringnya, mungkin dengan pipa ke findstr(jika Anda ingin alat MS-Windows), atau grep.

Mencari Statickata kunci menggunakan salah satu alat ini tampaknya menjadi petunjuk yang bagus.

Hilton Fernandes
sumber