Aracılığıyla paylaş


C/C++ Yan Yana Derlemeleri Oluşturma

Yan yana derleme, bir uygulamanın çalışma zamanında kullanabilecekleri bir grup DLL, windows sınıfı, COM sunucusu, tür kitaplığı veya arabirimden oluşan bir kaynak koleksiyonudur. Derlemelerdeki DLL'leri yeniden paketlemenin birincil avantajı, derlemelerin birden çok sürümünün uygulamalar tarafından aynı anda kullanılabilmesi ve güncelleştirme sürümü durumunda şu anda yüklü derlemelere hizmet vermek mümkün olmasıdır.

C++ uygulaması, uygulamanın farklı bölümlerinde bir veya birden çok DLL kullanabilir. Çalışma zamanında DLL'ler ana işleme yüklenir ve gerekli kod yürütülür. Uygulama, istenen DLL'leri bulmak, diğer bağımlı DLL'lerin yüklenmesi gereken diğer DLL'leri anlamak ve bunları istenen DLL ile birlikte yüklemek için işletim sistemine dayanır. Windows XP, Windows Server 2003 ve Windows Vista'dan önceki Windows işletim sistemleri sürümlerinde, işletim sistemi yükleyicisi uygulamanın yerel klasöründe veya sistem yolunda belirtilen başka bir klasörde bağımlı DLL'leri arar. Windows XP, Windows Server 2003 ve Windows Vista'da, işletim sistemi yükleyicisi bir bildirim dosyası kullanarak bağımlı DLL'leri ve bu DLL'leri içeren yan yana derlemeleri de arayabilir.

Varsayılan olarak, Visual Studio ile bir DLL oluşturulduğunda, kimliği 2'ye eşit olan bir RT_MANIFEST kaynağı olarak eklenmiş bir uygulama bildirimi vardır. Yürütülebilir dosyalarda olduğu gibi, bu bildirim de bu DLL'nin diğer derlemelere bağımlılıklarını açıklar. Bu, DLL'nin yan yana derlemenin parçası olmadığını ve bu DLL'ye bağımlı olan uygulamaların bunu yüklemek için bir uygulama bildirimi kullanmadığını, bunun yerine bu DLL'yi sistem yolunda bulmak için işletim sistemi yükleyicisine bağlı olacağını varsayar.

Dekont

Uygulama bildirimi kullanan bir DLL'nin bildirimin 2'ye eşit bir kimlikle bir kaynak olarak katıştırılmış olması önemlidir. DLL çalışma zamanında dinamik olarak yüklenirse (örneğin, LoadLibrary işlevi kullanılarak), işletim sistemi yükleyiciSI DLL'nin bildiriminde belirtilen bağımlı derlemeleri yükler. Dll'ler için dış uygulama bildirimi, çağrı sırasında LoadLibrary denetlenmiyor. Bildirim eklenmediyse, yükleyici derlemelerin yanlış sürümlerini yüklemeye çalışabilir veya bağımlı derlemeleri bulamıyor olabilir.

Bir veya birkaç ilgili DLL, derlemeyi oluşturan dosyaların yanı sıra derlemenin diğer yan yana derlemelere bağımlılığını açıklayan, karşılık gelen bir derleme bildirimiyle yan yana bir bütünleştirilmiş koda yeniden paketlenebilir.

Dekont

Bir derleme bir DLL içeriyorsa, derleme bildirimini bu DLL'ye kimliği 1'e eşit bir kaynak olarak eklemek ve özel derlemeye DLL ile aynı adı vermeniz önerilir. Örneğin, DLL'nin adı mylibrary.dll ise, bildirimin assemblyIdentity> öğesinde <kullanılan name özniteliğinin değeri de mylibrary olabilir. Bazı durumlarda, bir kitaplığın .dll dışında bir uzantısı olduğunda (örneğin, MFC ActiveX Denetimleri projesi bir .ocx kitaplığı oluşturur) bir dış derleme bildirimi oluşturulabilir. Bu durumda, derlemenin adı ve bildirimi DLL'nin adından farklı olmalıdır (örneğin, MyAssembly, MyAssembly.manifest ve mylibrary.ocx). Ancak yine de bu derlemenin gelecekteki bakım maliyetini azaltmak için bu tür kitaplıkları extension.dll dosyasına sahip olacak şekilde yeniden adlandırmanız ve bildirimi kaynak olarak eklemeniz önerilir. İşletim sisteminin özel derlemeleri nasıl araması hakkında daha fazla bilgi için bkz . Derleme Arama Sırası.

Bu değişiklik, ilgili DLL'lerin uygulama yerel klasöründe özel bir derleme olarak veya WinSxS derleme önbelleğinde paylaşılan bir derleme olarak dağıtılmalarına izin verebilir. Bu yeni derlemenin doğru çalışma zamanı davranışını elde etmek için birkaç adım izlenmelidir; Yan Yana Derlemeler Oluşturma Yönergeleri bölümünde açıklanmıştır. Bir derleme doğru yazıldıktan sonra, buna bağımlı bir uygulamayla birlikte paylaşılan veya özel derleme olarak dağıtılabilir. Yan yana derlemeleri paylaşılan derleme olarak yüklerken, Windows XP'de Yan Yana Paylaşım için Win32 Derlemelerini Yükleme bölümünde açıklanan yönergeleri izleyebilir veya birleştirme modüllerini kullanabilirsiniz. Yan yana derlemeleri özel bir derleme olarak yüklerken, yükleme işleminin bir parçası olarak karşılık gelen DLL'yi, kaynakları ve derleme bildirimini hedef bilgisayardaki uygulama yerel klasörüne kopyalayarak bu derlemenin çalışma zamanında yükleyici tarafından bulunabildiğinden emin olabilirsiniz (bkz . Derleme Arama Dizisi). Bir diğer yol da Windows Installer'ı kullanmak ve Windows XP'de Bir Uygulamanın Özel Kullanımı için Win32 Derlemelerini Yükleme bölümünde açıklanan yönergeleri izlemektir.

Ayrıca bkz.

C/C++ Yalıtılmış Uygulamaları Derleme
C/C++ Yalıtılmış Uygulamaları ve Yan Yana Derlemeleri Oluşturma