2011-01-04 10 views
5

Recientemente, pasé un tiempo trabajando para obtener la versión de impulso 1.44.0 en windows con soporte iostream para ambos zlib & filtros de compresión bzip2. Por diversas razones, se decidió permitir la creación de bibliotecas zlib & bzip2 desde el origen. Por lo que vale, pero no creo que importe, la versión de MSVC que estoy usando es VC9 (VS2008). También tenga en cuenta que, desde mi examen superficial, este problema debería aplicarse a cualquier versión de boost con iostreams compilados contra bzip2 en Windows.impulsar iostreams con bzip2 construido desde la fuente en Windows

Boost construido limpiamente especificando -sZLIB_SOURCE=<PATH> y -sBZIP2_SOURCE=<PATH>. Sin embargo, se observó que las bibliotecas boost_iostreams * .dll dependían de libbz2.dll (en lugar de boost_bzip2 * .dll), que no existía. Boost, sin embargo, compiló con éxito boost_bzip2 * .dll. Tenga en cuenta que estoy usando el comodín como marcador de posición para toda la información de variante de compilación.

Problema:

En algún lugar una dependencia no modificable a libbz2.dll existe.

Solución:

La solución más sencilla que encontré, fue modificar libbz2.def incluido con la fuente bzip2. Es decir, eliminar la línea (a partir de v1.0.6 bzip2, que es la línea 1):

LIBRARY   LIBBZ2 

La eliminación de esta línea se elimina la dependencia no modificable a un archivo DLL llamado "libbz2.dll". Esto permite entonces que las bibliotecas creadas con boost denominadas boost_bzip2 * .dll y los archivos * .lib y * .exp generados se resuelvan correctamente en la DLL correspondiente, y que exporten todas las funciones necesarias.

Disculpas:

Lo siento por publicar una pregunta auto-responder, pero no se encontró ninguna solución a este problema en particular en el Internet, o en menos. También publicaré la solución anterior como respuesta, pero la dejaré inactiva por un tiempo en caso de que alguien presente una solución más limpia. (es decir, uno que se puede hacer que todavía permite aumentar la compilación de zlib & bzip2 libs desde el origen, pero no requiere ninguna modificación en absoluto para impulsar o fuente bzip2).

Respuesta

3

La solución más simple que encontré fue modificar libbz2.def incluido con la fuente bzip2. Es decir, eliminar la línea (a partir de v1.0.6 bzip2, que es la línea 1):

LIBRARY LIBBZ2 

La eliminación de esta línea se elimina la dependencia no modificable a un archivo DLL llamado "libbz2.dll". Esto permite entonces que las bibliotecas creadas con boost denominadas boost_bzip2 * .dll y generadas * .lib y * .exp se resuelvan correctamente en la DLL correspondiente, así como que exporten todas las funciones necesarias.

+0

Gracias por compartir esto. De hecho, resuelve el problema. –

Cuestiones relacionadas