如何使用 msvc10 和 ICU 编译 boost 1.54
How to compile boost 1.54 with msvc10 and ICU?
我正在尝试用 unicode 制作我的第一个应用程序,我理解为什么仍然有这么多应用程序无法处理这个问题。我骑了几篇建议尽可能多地使用 utf-8(和 std::string)的文章。我需要跨平台,我实际上尝试处理Windows。由于我需要很多正则表达式,并且我发现 boost 非常有用,所以我正在尝试使用 ICU 编译它,但我花了一整天的时间失败。我想知道是否有人已经成功地使用 ICU (1.54) 使用 msvc10.0 编译 boost (5.2)?
我尝试了所有 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 文件(booste locale 文件夹中的 vc10.mak)进行编译,但它为我生成了 1.53 版本的库。我认为这只是 mak 文件中的一个错误,所以我只是在 mak 文件中将每个 1.53 替换为 1.54 后尝试重新编译,但无事可做,"has_icu 构建"仍然告诉我"否(缓存)",并且我的应用程序使用一些 ICU 的东西仍然无法链接。
我仍然是 boost 的初学者,以及所有这些 Unicode 的东西,但我错过了什么,或者无法使用 ICU 编译最新版本的 boost ?此外,我找不到来自提升的任何错误报告/日志。
感谢您的帮助!
卡利斯
似乎今天是更好的一天,我的应用程序现在成功地编译并链接到boost 1.54和ICU。最后,这是我的错,如此愚蠢的东西,但如果有人有同样的问题,并谈到这个话题,我只建议两件事:编译你自己的 ICU(二进制文件不提供提升所需的调试)并运行 icucheck.bat 测试你的二进制文件,在两种变体中。
就个人而言,我只检查了调试变体。我的发布 icu 二进制文件编译和链接没有任何 arror,但是当我今天检查时,它没有通过测试。只是一次清洁和重建,一切都很完美。
- 编译 Boost 时在 OS X 上的"ld:未知选项:-soname"
- 在其他容器中使用 boost::container::static_vector 时,GCC 编译错误"将'const s'绑定到类型's&'的引用丢弃限定符"
- 在 Centos7 上使用 boost 1.71.0 编译错误
- 包含来自 boost 1.73.0 的read_graphviz_new.cpp无法编译
- 编译用于Sony NMOS实现的C++boost库
- Simple_ls.cpp的C++Boost编译错误-未找到对Boost的引用::文件系统::路径::文件名
- python的Boost编译错误
- 在 Ubuntu 14.04 上使用 boost 编译:未定义对 'boost::thread::get_id() const' 的引用
- 使用boost编译时出错
- 关于使用cmake和boost编译c++代码的错误
- ubuntu服务器14.04上的Boost编译失败
- 使用boost编译错误.图1.56.0和g++ 4.6.4
- OS X 10.8.5下的Boost编译错误
- Boost编译标记gcc错误
- 使用mingw的boost编译错误
- Boost编译标志,它是什么意思
- Boost编译问题
- 用boost编译一些代码.Python在win7-64位
- 不能用boost编译
- 使用boost编译以使用可用的boost版本