2012-02-12 37 views
6

Bazı .lib dosyaları var, ancak .h başlık dosyalarına erişimim yok. Bu, .lib dosyalarının artık işe yaradığı anlamına mı geliyor?.lib dosyaları, başlık dosyaları olmadan kullanılabilir mi?

Değilse, bunları nasıl tekrar kullanabilirim?

Bu satırı programımda kullanmayı denedim, ancak son yürütülebilir dosyada (CFF Explorer ile doğrulanmış) derlenmiş gibi görünmüyor.

#pragma comment(lib, "SomeLibFile.lib") 

Yani .lib dosyasını bağlamanın tek yolu, başlık dosyalarını kullanmaktır? .lib dosyası için bir başlık dosyasını kurtarmak için herhangi bir araç var mı?

+4

Neden kütüphanenin indirme sayfasına gidip başlıkları yeniden indirmiyorsunuz? – Lefteris

+0

Dosyaları oluşturmak için bir araç kullandım. .dll ve .lib vb. Çıktılar. .dll kullanarak hiçbir sorunum yok, ancak neden .h dosyası ile bir .lib dosyası üretildiğini merak ediyorum. – user25101622

+1

dll'yi nasıl kullanıyorsunuz? Bir başlık olmalı, değil mi? .NET yapmıyorsanız. Neden bu kadar belirsiz oluyorsun? Bize aracın adını söyle. –

cevap

5

.lib dosya kodunun nasıl yazıldığına bağlıdır. Bir api ise, bu extern anahtar kelimesinin ne için olduğunu. Size fonksiyon ihracatını gösteren bir çeşit program bulabilirsin. Sonra bunları kodunuzda extern olarak ilan edebilirsiniz. Sorun, veri yapılarınız olsa da. Neyse, teknik olarak başlık dosyalarına sahip olmanız gerekmez, veri yapılarını kendiniz tanımlayabilir ve işlevleri extern anahtar sözcüğüyle bildirebilirsiniz.

Derlemenizi, derleme işleminizin sonunda bağlayıcınızı çalıştırdığınızda bağlayabilirsiniz.

+2

beni yanlış anlamayın, bunu yapmanın en iyi yolu başlıklarını bulmaktır. –

2

Bir .lib dosyasını linker komut satırından geçirerek bağlayabilirsiniz, #pragma gerekli.

Elbette, aslında içinde herhangi bir şey kullanmak, çağrı kurallarını, işlev imzalarını, kullanıcı tanımlı türlerin düzenini bilmeyi gerektirir. Bu genellikle bir başlık dosyası tarafından sağlanır, ancak belgelere de bulunabilir.

Her durumda, başlık dosyaları derleyici tarafından oluşturulmaz (iyi MIDL ve CORBA, makine tarafından oluşturulan üstbilgi dosyalarını kullanır, ancak üstbilgideki tüm bilgiler .idl dosyalarına hala el ile girilir). Teknolojiniz bir tür kitaplığı kullanmadığı sürece, gerekli bilgiler bir DLL ile korunmaz.

İlgili konular