0

我正在尝试使用“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()创建了一个小型测试应用程序来查看支持哪些后端。不幸的是,只列出了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 回答