2

私は初めてのアプリケーションを Unicode で作成しようとしていますが、ユニコードに対応できないアプリケーションがまだたくさんある理由を理解しています。可能な限り utf-8 (および std::string) を使用することを提案するいくつかの記事に乗りました。私はクロス プラットフォームである必要があり、実際に Windows を扱おうとしています。多くの正規表現が必要で、boost が非常に便利であることがわかったので、ICU でコンパイルしようとしていますが、丸一日失敗してしまいました。ICU (5.2) を使用して msvc10.0 でブースト (1.54) をコンパイルすることに成功した人がいるのだろうか?

私はすべての bjam の組み合わせを試しました (最初にロケールをコンパイルしようとしました)。成功せず、次のように少し難解になりました。

>.\bjam --with-locale -sHAVE_ICU=1 -sICU_PATH=<ICU_path> stage
>.\bjam --with-locale -sHAVE_ICU=1 -sICU_PATH=<ICU_path> -a stage
>.\bjam --with-locale -sICU_PATH=<ICU_path> stage
>.\bjam --with-locale -sICU_PATH=<ICU_path> -a stage
>.\bjam --with-locale stage
>.\bjam --with-locale -a stage
>.\bjam --with-locale -sHAVE_ICU=1 -sICU_PATH=<ICU_path> install
>.\bjam --with-locale -sHAVE_ICU=1 -sICU_PATH=<ICU_path> -a install
>.\bjam --with-locale -sICU_PATH=<ICU_path> install
>.\bjam --with-locale -sICU_PATH=<ICU_path> -a install
>.\bjam --with-locale install
>.\bjam --with-locale -a install
...

ご覧のとおり、私はブーストにあまり詳しくありません。同じことをしようと不平を言う人はほとんどいませんでしたが、古いバージョンでは、彼らの解決策は私にはうまくいきませんでした。ICU バイナリがデバッグ ライブラリと一緒に配布されていないことに気付いたので、自分で ICU をコンパイルしましたが、何も解決しませんでした (また、リリース バリアントのみで bjam を使用してみました)。

また、mak ファイル (boost ロケール フォルダー内の vc10.mak) を使用してコンパイルしようとしましたが、1.53 バージョンのライブラリが生成されました。これは mak ファイルの間違いだと思ったので、mak ファイルの 1.53 を 1.54 に置き換えてから再コンパイルしようとしましたが、何もすることがなく、「has_icu builds」は「no (cached)」と表示され、私の一部の ICU スタッフを使用するアプリケーションは、まだリンクに失敗しました。

私はまだブーストと Unicode のすべての初心者ですが、ICU でブーストの最新バージョンをコンパイルすることは不可能ですか? さらに、ブーストからのエラーレポート/ログが見つかりません。

ご協力いただきありがとうございます !

カリーズ

4

1 に答える 1

1

今日は良い日になり、アプリケーションはブースト 1.54 と ICU で正常にコンパイルおよびリンクされるようになりました。最後に、それは私のせいでした。そのようなばかげたものですが、誰かが同じ問題を抱えていて、このトピックに来た場合、私は2つのことを提案します:独自のICUをコンパイルし(バイナリはブーストに必要なデバッグを提供しません)、実行しますicucheck.bat を使用して、両方のバリアントでバイナリをテストします。

個人的には、デバッグ バリアントのみをチェックしました。私のリリース icu バイナリは、エラーなしでコンパイルおよびリンクされましたが、今日確認したところ、テストに失敗しました。クリーンアップして再構築するだけで、すべてが完全に機能します。

于 2013-10-31T18:59:16.160 に答える