我正在尝试用 unicode 制作我的第一个应用程序,并且我理解为什么仍然有这么多应用程序无法处理它。我很少看到建议尽可能使用 utf-8(和 std::string)的文章。我需要跨平台,我实际上尝试处理Windows。因为我需要很多正则表达式,而且我发现 boost 非常有用,所以我试图用 ICU 编译它,但我一整天都在失败。我很想知道是否有人已经成功地使用 ICU (5.2) 用 msvc10.0 编译了 boost (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
...
如您所见,我对 boost 并不熟悉。我骑着很少有人抱怨尝试相同,但在旧版本上,他们的解决方案不适用于我。我注意到 ICU 二进制文件没有与调试库一起分发,所以我自己编译了 ICU,但这并没有解决任何问题(我也尝试使用 bjam 和仅发布变体)。
我还尝试使用 mak 文件(boost locale 文件夹中的 vc10.mak)进行编译,但它为我生成了 1.53 版本的库。我认为这只是 mak 文件中的一个错误,所以我只是在将 mak 文件中的每个 1.53 替换为 1.54 后尝试重新编译,但无事可做,“has_icu builds”仍然告诉我“没有(缓存)”,而我的使用一些 ICU 东西的应用程序仍然无法链接。
我仍然是 boost 的初学者,并且使用了所有 Unicode 的东西,但是我是否遗漏了什么或者不可能用 ICU 编译最新版本的 boost?此外,我无法从 boost 中找到任何错误报告/日志。
谢谢你的帮助 !
凯利斯