如何使用msvc10和ICU编译boost 1.54?

时间:2013-10-30 23:02:17

标签: c++ regex boost icu visual-studio-2010

我正在尝试在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
...

如你所见,我对提升并不熟悉。 我骑过几个人抱怨尝试相同,但在旧版本,他们的解决方案不适合我。 我注意到ICU二进制文件没有与调试库一起分发,所以我自己编译了ICU,但是没有解决任何问题(我也尝试使用只有发布版本的bjam)。

我也尝试使用mak文件(在booste locale文件夹中的vc10.mak)进行编译,但它生成了1.53版本的libs。我认为这是juste在mak文件中的一个错误,所以我只是在mak文件中将每个1.53替换为1.54后重新编译,但无所事事,“has_icu builds”仍告诉我“no(cached)”,而我的使用某些ICU内容的应用程序仍无法链接。

我仍然是使用boost的初学者,以及所有的Unicode内容,但是我错过了什么或者用ICU编译最新版本的boost是不可能的?此外,我无法从boost中找到任何错误报告/日志。

感谢您的帮助!

Kallys

1 个答案:

答案 0 :(得分:1)

似乎今天是更美好的一天,我的应用程序现在编译和放大与boost 1.54和ICU成功连接。 最后这是我的错,这是一个愚蠢的东西,但如果有人有同样的问题,并谈到这个话题,我只是建议两件事:编译自己的ICU(二进制文件不提供升级所需的调试)和运行icucheck.bat可以测试你的二进制文件。

个人而言,我只检查了调试版本。我的发布icu二进制编译和链接没有任何恐怖,但当我今天检查,它没有通过测试。只是干净和重建,一切都很完美。