Windows kitaplığının İçeriği (* .lib) Nasıl Görülür


181

Bir ikili dosya - Windows statik kitaplığı (* .lib) var.
Bu kütüphaneden fonksiyonların isimlerini ve arayüzlerini bulmanın basit bir yolu var mı?

Benzer bir şey emfarve elfdumpyardımcı programlar (Linux sistemlerinde)?


1
Not: .NET'e özgü komut istemi, Visual Studio sürümleriyle birlikte gelir ancak Express sürümü ile birlikte gelmez. Gönderen: social.msdn.microsoft.com/Forums/en-US/…
isgoed

Yanıtlar:


199

Statik bir kitaplıktan bahsettiğinizi varsayarsak, kitaplıktaki DUMPBIN /SYMBOLSişlevleri ve veri nesnelerini gösterir. Bir içe aktarma kitaplığından ( .libDLL'den dışa aktarılan sembollere atıfta bulunmak için kullanılır) bahsediyorsanız , o zaman istersiniz DUMPBIN /EXPORTS.

"C" ikili arayüzüne bağlı işlevler için, bunun yine de size değer, parametre veya çağrı kuralı döndürmeyeceğini unutmayın. Bu bilgi hiç kodlanmamıştır .lib; bunları doğru bir şekilde çağırmak için önceden (örneğin, başlık dosyalarındaki prototipler aracılığıyla) bilmeniz gerekir.

C ++ ikili arabirimine bağlı işlevler için, çağırma kuralı ve bağımsız değişkenler işlevin dışa aktarılan adında ("ad yönetimi" olarak da adlandırılır) kodlanır. DUMPBIN /SYMBOLShem "karıştırılmış" işlev adını hem de kodu çözülmüş parametre kümesini gösterecektir.


6
Hem / SYMBOLS hem de / EXPORTS günümüzde çalışmıyor. .Lib dosyasındaki tüm işlevleri görmek için / ALL ile bir | more pipe kullanmalıyım.
user5280911

100

Görsel bir komut konsolu açma (Visual Studio Komut İstemi)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

veya

lib /LIST openssl.x86.lib

ya da sadece 7-zip ile açın :) onun bir AR arşivi


19
7-zip ile serin hile orada iki .txt dosyaları var ne anlama geliyor?
Damian

21

ar t libfile.aUnix'teki gibi bir araç istedim .
Windows eşdeğeri lib.exe /list libfile.lib.


4
Evet lib (yalnızca) obj dosyalarını gösterecektir; obj dosyalarındaki işlevleri ve verileri göstermez.
user34660

14

"dumpbin -exports" dll için çalışır, ancak bazen lib için çalışmayabilir. Lib için "dumpbin -linkermember" veya sadece "dumpbin -linkermember: 1" kullanabiliriz.



13

DUMPBIN / İHRACAT Bu bilgilerin çoğunu alacak ve MSDN'e vurarak gerisini alacaksınız.

Visual Studio paketlerinden birini edinin; C ++


3

1) VS 2017 (veya makinenizde bulunan herhangi bir sürüm) için bir Geliştirici Komut İstemi açın (Başlat menüsü -> Tüm programlar -> Visual Studio 2017 (veya makinenizde bulunan herhangi bir sürüm altında) -> Visual Studio Araçları -> VS 2017 için Geliştirici Komut İstemi.

2) Aşağıdaki komutu girin:

dumpbin /EXPORTS my_lib_name.lib


2

Diğer yanıtlarda görülebileceği dumpbin.exegibi, yürütme yolunuzda olması için Visual Studio sürümünüzde sunulan bir Geliştirici Komut İstemi'ni açmanız gerekir . Aksi takdirde, gerekli ortam değişkenlerini elle ayarlayabilirsiniz.

dumpbin /EXPORTS yourlibrary.libgenellikle küçük bir sembol listesi gösterir. Çoğu durumda, kütüphanenin dışa aktardığı işlevleri göstermez.

dumpbin /SYMBOLS /EXPORTS yourlibrary.libbu sembolleri gösterecek, aynı zamanda inanılmaz derecede büyük miktarda diğer simpoları da gösterecek. Bu nedenle, muhtemelen bir boru ile findstr(bir MS-Windows aracı istiyorsanız) veya filtrelemeniz gerekir grep.

StaticBu araçlardan birini kullanarak anahtar kelimeyi aramak iyi bir ipucu gibi görünüyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.