6

最近、zlibとbzip2の両方の圧縮フィルターを両方のiostreamでサポートするWindows上にBoostバージョン1.44.0を構築する作業に時間を費やしました。さまざまな理由から、boostがソースからzlibとbzip2の両方のライブラリをビルドできるようにすることが決定されました。価値はありますが、重要ではないと思います。使用しているMSVCのバージョンはVC9(VS2008)です。また、私の表面的な調査から、この問題は、Windows上のbzip2に対して構築されたiostreamを使用するすべてのバージョンのブーストに適用されるはずであることに注意してください。

-sZLIB_SOURCE=<PATH>とを指定することにより、きれいに構築されたブースト-sBZIP2_SOURCE=<PATH>。ただし、boost_iostreams * .dll libsは、存在しなかったlibbz2.dll(boost_bzip2 * .dllではなく)に依存していることがわかりました。ただし、Boostはboost_bzip2*.dllを正常にビルドしました。すべてのビルドバリアント情報のプレースホルダーとしてワイルドカードを使用していることに注意してください。

問題: libbz2.dllへのハードコードされた依存関係がどこかに存在します。

4

1 に答える 1

4

私が見つけた最も簡単な解決策は、bzip2ソースに含まれているlibbz2.defを変更することでした。つまり、次の行を削除します(bzip2 v1.0.6の時点では、1行目です)。

LIBRARY   LIBBZ2

この行を削除すると、「libbz2.dll」という名前のDLLへのハードコードされた依存関係がなくなります。これにより、boost_bzip2 *.dllという名前のboost-builtlibsと生成された*.libおよび*.expファイルが、対応するDLLに適切に解決され、必要なすべての関数がエクスポートされます。

于 2011-01-04T01:29:51.300 に答える