2010-04-28 32 views
48

Derleme ve bağlama sırasında .exp kullanımı nedir? .lib ve .dll arasındaki fark nedir? Ben bağlanırken .lib kullanacağını biliyorum ve programı çalıştırırken .dll kullanılacaktır. Ama .lib ve .dll arasındaki fark tam olarak nedir?.exp kullanımı nedir ve .lib ile .dll arasındaki fark nedir?

.lib dosyası .dll dosyalarından gelen işlevlerin kodunu içermiyor mu? İki ayrı dosya kullanmanın gerekliliği nedir?

Lütfen açıklayınız. Şimdiden teşekkürler

cevap

71

Bir DLL için bir içe aktarma kitaplığı durumunda, .lib dosyası değil hiçbir gerçek kod içermez. Temelde, ilişkilendirilmiş DLL'deki işlevlerin yalnızca bir listesini içerir - bağlayıcıya, bu DLL'ye kitaplık ile bağlantılı bir öğeye bir başvuru gömmek için yeterli, ancak başka bir şey değil.

A .exp dosyası, bir .lib dosyasıyla hemen hemen aynı olan bir dışa aktarma dosyasıdır. Dairesel bağımlılığınız olduğunda (en azından öncelikli olarak) kullanılır. Örneğin, bir yürütülebilir dosya için eklenti olarak davranan bir DLL dosyanız olduğunu varsayalım. Yürütülebilir eklenti DLL'leri tarafından kullanılmak üzere bazı dışa aktarılmış işlevler sağlar, ancak eklentilerdeki bazı işlevleri de (ör. Bir eklentiyi yüklemek ve başlatmak için) çağırmak gerekir.

Yürütücü, bir .lib dosyası sağlamak üzere oluşturuluncaya kadar bağlantı oluşturmaz; ancak yürütülebilir dosya, DLL bir .lib dosyası sağlamak üzere oluşturuluncaya kadar bağlanamaz. Bağımlılığı kesmek için , çalıştırılabilire karşı çalıştırıcıyı çalıştırın, (bu DLL için bir .lib dosyası bulamadığı için), ancak bir .exp dosyası oluşturur. Daha sonra DLL'yi yürütülebilir dosya için .exp dosyasına bağlarsınız. Daha sonra yürütülebilir dosyayı üretmek için bağlantıyı yeniden çalıştırabilirsiniz, DLL için .lib dosyasını kullanın.

İlgili konular