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 emfar
dan elfdump
utilitas (pada sistem Linux)?
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 emfar
dan elfdump
utilitas (pada sistem Linux)?
Jawaban:
Dengan asumsi Anda berbicara tentang perpustakaan statis, DUMPBIN /SYMBOLS
menunjukkan fungsi dan objek data di perpustakaan. Jika Anda berbicara tentang perpustakaan impor (yang .lib
digunakan 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 .lib
sama 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 /SYMBOLS
akan menunjukkan Anda kedua nama fungsi "rusak" dan juga set parameter yang didekodekan.
LIB.EXE adalah pustakawan untuk VS
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
(seperti libtool di Unix)
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
Seperti itu dapat dilihat di jawaban lain Anda harus membuka Command Prompt Pengembang yang ditawarkan dalam versi Visual Studio Anda agar ada dumpbin.exe
di jalur eksekusi Anda. Jika tidak, Anda dapat mengatur variabel lingkungan yang diperlukan dengan tangan.
dumpbin /EXPORTS yourlibrary.lib
biasanya hanya akan menampilkan daftar simbol. Dalam banyak kasus, ini tidak akan menunjukkan fungsi ekspor perpustakaan.
dumpbin /SYMBOLS /EXPORTS yourlibrary.lib
akan 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 Static
kata kunci menggunakan salah satu alat ini tampaknya menjadi petunjuk yang bagus.