Recentemente, ho trascorso un po 'di tempo lavorando a ottenere boost versione 1.44.0 su Windows con entrambi iostreams support per entrambi i filtri di compressione bzip2 zlib &. Per una serie di motivi, è stato deciso di consentire a boost di creare sia le librerie zlib & bzip2 dall'origine. Per quello che vale, ma non credo che importi, la versione di MSVC che sto usando è VC9 (VS2008). Si noti inoltre che dal mio esame superficiale, questo problema dovrebbe applicarsi a qualsiasi versione di boost con iostreams costruiti contro bzip2 su Windows.boost di iostreams con bzip2 generato da source su windows
Boost compilato in modo pulito specificando -sZLIB_SOURCE=<PATH>
e -sBZIP2_SOURCE=<PATH>
. Tuttavia, è stato notato che le librerie boost_iostreams * .dll dipendevano da libbz2.dll (invece di boost_bzip2 * .dll), che non esisteva. Boost, tuttavia è riuscito a creare boost_bzip2 * .dll. Si noti che sto utilizzando il carattere jolly come segnaposto per tutte le informazioni sulla variante di build.
Problema:
Da qualche parte una dipendenza hardcoded per libbz2.dll esiste.
Soluzione:
La soluzione più semplice che ho trovato, era di modificare libbz2.def incluso con la sorgente di bzip2. Vale a dire, eliminare la riga (come di bzip2 v1.0.6, è la linea 1):
LIBRARY LIBBZ2
rimozione di questa linea elimina la dipendenza hardcoded per una DLL denominato "libbz2.dll". Ciò consente quindi alle librerie boost-boost denominate boost_bzip2 * .dll e ai file * .lib e * .exp generati per risolversi correttamente nella DLL corrispondente, oltre a esportare tutte le funzioni necessarie.
Scuse:
Siamo spiacenti per la pubblicazione di una domanda di auto-rispondere, ma non ho trovato alcuna soluzione a questo problema particolare su internet, o su SO. Pubblicherò anche la soluzione di cui sopra come risposta, ma la lascerò non accettata per un po 'nel caso qualcuno si presenti con una soluzione più pulita. (ad esempio, uno che può essere fatto, consente comunque di aumentare le librerie zlib & bzip2 dall'origine, ma non richiede alcuna modifica per l'origine boost o bzip2).
Grazie per aver condiviso questo. Infatti risolve il problema. –