2011-01-04 25 views
5

üzerine kaynaktan inşa bzip2 ile iostreams, ben hem zlib & bzip2 sıkıştırma filtreleri için iostreams destek hem pencerelerin üzerine inşa boost sürümü 1.44.0 alma konusunda çalışan biraz zaman geçirdim. Çeşitli nedenlerden dolayı, kaynağın hem zlib & bzip2 kitaplıklarını oluşturmasına izin verilmesine karar verildi. Değeri ne için, ama önemli olduğunu düşünmüyorum, kullanıyorum MSVC sürümü VC9 (VS2008) 'dir. Ayrıca, yüzeysel muayenemden, bu sorunun pencerelerde bzip2'ye karşı oluşturulan iostreams ile herhangi bir yükseltme sürümü için geçerli olduğunu unutmayın.boost Son pencereler

Boost -sZLIB_SOURCE=<PATH> ve -sBZIP2_SOURCE=<PATH> belirterek temiz bir şekilde inşa etti. Ancak, boost_iostreams * .dll libs var olmayan libbz2.dll (boost_bzip2 * .dll yerine) bağlı olduğu fark edildi. Boost, başarılı bir şekilde boost_bzip2 * .dll dosyasını oluşturdu. Tüm yapı varyantı bilgileri için joker karakteri yer tutucu olarak kullandığımı unutmayın. Sorun

:

yerde kodlanmış bağımlılık libbz2.dll için var.

Çözüm:

buldum basit çözüm, libbz2.def Bzip2 kaynağı ile birlikte, değiştirmek olmuştur. Bu satırı Çıkarma "libbz2.dll" adlı bir DLL için kodlanmış bağımlılık ortadan kaldırır

LIBRARY   LIBBZ2 

: Yani, satırı silin (bzip2 v1.0.6 itibariyle, bu hat 1'dir). Bu daha sonra boost_bzip2 * .dll adlı boost-built libs izin verir ve * .lib ve * .exp dosyaları uygun olarak adlandırılan DLL için gerekli tüm işlevler ihracat yanı sıra düzgün şekilde çözümlenir.

Özür: kendinden yanıtlayan soru yazabilmek için

Üzgünüm ama internette bu sorun herhangi bir çözüm bulmak veya SO üzerinde vermedi. Ayrıca yukarıdaki çözümü bir cevap olarak da göndereceğim, ancak birisinin daha temiz bir çözüm bulması durumunda bir süreliğine kabul edilmeyecek. (diğer bir deyişle, zlib & bzip2 lib'lerini kaynaktan oluşturmaya devam etmesine izin veren, ancak destek veya bzip2 kaynağının değiştirilmesi için herhangi bir değişiklik gerektirmeyen).

cevap

3

Bulduğum en basit çözüm, bzip2 kaynağıyla birlikte verilen libbz2.def dosyasını değiştirmek oldu. Bu satırı Çıkarma "libbz2.dll" adlı bir DLL için kodlanmış bağımlılık ortadan kaldırır

LIBRARY LIBBZ2 

: Yani, satırı silin (bzip2 v1.0.6 itibariyle, bu hat 1'dir). Bu daha sonra boost_bzip2 * .dll adlı boost-built libs izin verir ve gerekli tüm işlevleri ihracat yanı sıra, karşılık gelen DLL doğru şekilde çözmek için * .lib ve * .exp dosyaları oluşturulur.

+0

Bunu paylaştığınız için teşekkür ederiz. Gerçekten sorunu çözüyor. –