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)?


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.


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


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.


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".



13

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

Dapatkan salah satu paket Visual Studio; C ++


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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.