无法在Visual C ++ 2013上使用ICU 53.1构建Boost :: Locale

时间:2014-09-23 17:17:12

标签: boost boost-locale

我正在尝试使用'Building 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()创建了一个小型测试应用,以查看支持的后端。不幸的是,只列出了 winapi std

有人可以建议可能出错的地方吗?

更新

打开Locale jam文件时:

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

我不确定这个,但上面的代码片段引用了icudt,我注意到dll文件附加了ICU的版本,即: icudt

我要更新引用以匹配附加版本,即: icudt53 ,看看会发生什么。

1 个答案:

答案 0 :(得分:1)

我的Boost Locale工作正常,但出于某种原因,我永远无法使用Boost Locale指令。如果Boost Locale安装说明适合您,那很好。如果没有,你可以做我做的事情并完成Boost的重建。

以下假设您已正确构建ICU并将其包含在路径中。

  1. 更改目录以提升root权限,例如:d:\ boost_1_56_0

  2. type:bootstrap

  3. bjam -sICU_PATH = d:\ icu --toolset = msvc-12.0 --build-type = complete stage

  4. 以上对我来说效果很好。只需确保指定VC ++的版本,在我的情况下高于12.0