0

「Boost.Locale のビルド」手順を使用して、Boost::Locale (Boost バージョン 1.56) をビルドしようとしています。まず、数か月前に完全な Boost ライブラリのインストールに成功しました。これにより、多数の Boost::Locale .dll および .lib ファイルが作成されました。

boost_locale-vc120-mt-1_56.dll
boost_locale-vc120-mt-1_56.lib
boost_locale-vc120-mt-gd-1_56.dll
boost_locale-vc120-mt-gd-1_56.lib

今日、ICU4C 53.1 をダウンロードしてビルドしました (デバッグとリリースの両方)。次のディレクトリをコンピューター パスに追加しました。

d:\icu\bin

次に、ICU テストを実行しましたが、問題なく実行されました。

次に、Boost::Locale を ICU にリンクしようとしましたが、Locale のインストール手順に示されているように、次のことを行いました。

コマンドプロンプトから、次のように入力しました。

.\bjam -sICU_PATH=d:\icu --with-locale stage

構築中であることを示し、画面に「...忍耐...1214個のターゲットが見つかりました...」と表示されました

D:\boost_1_56_0\bin.v2\config.log の結果は次のとおりです。

...found 1 target...
...updating 1 target...
config-cache.write bin.v2\project-cache.jam
...updated 1 target...

この時点では、どの「ターゲット」が更新されたのかわからないため、サポートされているバックエンドを確認するためにget_all_backends()を使用して小さなテスト アプリを作成しました。残念ながら、winapistdしかリストされていませんでした。

誰かが何がうまくいかなかったのかを示唆できますか?

アップデート

Locale jam ファイルを開くと、次のようになります。

searched-lib icudt : :  <search>$(ICU_PATH)/lib
                        <name>icudata
                        <link>shared
                        <runtime-link>shared ;

これについてはよくわかりませんが、上記のスニペットはicudtを参照しており、dllファイルにICUのバージョンが追加されていることに気付きました.icudt

追加されたバージョン、つまりicudt53に一致するように参照を更新し、何が起こるかを確認します。

4

1 に答える 1

1

Boost Locale は正常に動作しましたが、何らかの理由で、Boost Locale の手順を使用してそれを行うことができませんでした。Boost Locale のインストール手順が役に立った場合は、問題ありません。そうでない場合は、私が行ったことを実行して、Boost を完全に再構築することができます。

以下は、ICU が正しくビルドされ、パスに含まれていることを前提としています。

  1. ディレクトリを変更してルートをブーストします。例: d:\boost_1_56_0

  2. タイプ: ブートストラップ

  3. bjam -sICU_PATH=d:\icu --toolset=msvc-12.0 --build-type=完全なステージ

上記は私にとってはうまくいきました。VC++ のバージョンを必ず指定してください。私の場合は 12.0 以上です。

于 2014-10-21T20:41:25.637 に答える