如何在Open C/C++应用中使用Boost.Regex
2008-09-15 21:50
337 查看
尽管新版的Open C/C++ SDK的发布支持了stlport, boost等库,但boost的支持尚不完整。前些时曾初步测试Regex库,编译时提示系统头文件中有许多错误。近日得空终于使得这个测试例子能运行了。下面描述具体过程:
我的测试环境是: SDK: S60 3rd MR Ed + Open C/C++ SDK; IDE: Carbide.c++ 1.3
0、准备工作
安装OpenC/C++ SDK,这里就不赘述了。然后以该SDK附带的boost例子为基础创建一个regex_ex例子项目。Regex例子可以在网上找一个,比如这里的:
http://www.cs.brown.edu/~jwicks/boost/libs/regex/doc/examples.html
http://www.onlamp.com/lpt/a/6535
1、自定义boost的选项:
打开boost/config/user.hpp文件,定义下面两个宏: (原来就有,把注释符号去掉就行了)
#define BOOST_DISABLE_WIN32
#define BOOST_ALL_NO_LIB
2、修改MIN_WCHAR的定义
打开wchar.h文件,将
#define WCHAR_MIN (wchar_t)__INT_MIN
改为
#define WCHAR_MIN __INT_MIN
即,去掉wchar_t强制转换。否则这个在宏判断时导致莫名其妙的问题。
可保留 WCHAR_MAX的定义不变,没有用到。
3、修正Boost.Regex库中的一个问题:
打开boost/regex/v4/basic_regex_parser.hpp,修改
std::ptrdiff_t len = (std::min)(static_cast<std::ptrdiff_t>(2), m_end - m_position);
为
std::ptrdiff_t len = (std::min)(static_cast<std::ptrdiff_t>(2), static_cast<std::ptrdiff_t>(m_end - m_position));
4、编译与链接regex的源代码
不知Open C/C++ SDK是否有Boost.Regex库的lib文件,我采用的是直接从Regex源代码编译(下载Boost1.35)。
最后,Boost.Regex测试例子在Emulator与真机上均顺利通过。
我的测试环境是: SDK: S60 3rd MR Ed + Open C/C++ SDK; IDE: Carbide.c++ 1.3
0、准备工作
安装OpenC/C++ SDK,这里就不赘述了。然后以该SDK附带的boost例子为基础创建一个regex_ex例子项目。Regex例子可以在网上找一个,比如这里的:
http://www.cs.brown.edu/~jwicks/boost/libs/regex/doc/examples.html
http://www.onlamp.com/lpt/a/6535
1、自定义boost的选项:
打开boost/config/user.hpp文件,定义下面两个宏: (原来就有,把注释符号去掉就行了)
#define BOOST_DISABLE_WIN32
#define BOOST_ALL_NO_LIB
2、修改MIN_WCHAR的定义
打开wchar.h文件,将
#define WCHAR_MIN (wchar_t)__INT_MIN
改为
#define WCHAR_MIN __INT_MIN
即,去掉wchar_t强制转换。否则这个在宏判断时导致莫名其妙的问题。
可保留 WCHAR_MAX的定义不变,没有用到。
3、修正Boost.Regex库中的一个问题:
打开boost/regex/v4/basic_regex_parser.hpp,修改
std::ptrdiff_t len = (std::min)(static_cast<std::ptrdiff_t>(2), m_end - m_position);
为
std::ptrdiff_t len = (std::min)(static_cast<std::ptrdiff_t>(2), static_cast<std::ptrdiff_t>(m_end - m_position));
4、编译与链接regex的源代码
不知Open C/C++ SDK是否有Boost.Regex库的lib文件,我采用的是直接从Regex源代码编译(下载Boost1.35)。
最后,Boost.Regex测试例子在Emulator与真机上均顺利通过。
相关文章推荐
- 【C++ STL学习与应用总结】22: 函数组合之1:如何使用std::bind (since C++11)
- Worktile 移动团队如何使用 C++ 完成跨平台应用开发
- 如何使用Lua扩展C/C++应用系列1
- 如何在Visual Studio 2010中使用C++“准”标准库 Boost 1.49.0
- 【C++ STL应用与实现】7: 如何使用std::forward_list 单链表 (since C++11)
- 如何使用Lua扩展C/C++应用系列2
- 如何使用Lua扩展C/C++应用系列3-转自bbs.luachina.net
- 如何使用Lua扩展C/C++应用系列3
- 【C++ STL应用与实现】62: 如何使用std::next_permutation
- 【C++ STL应用与实现】18: 如何使用迭代器适配器
- 【C++ STL应用与实现】5: 如何使用std::array (since C++11)
- 如何使用Lua扩展C/C++应用系列1-转自bbs.luachina.net
- 【C++ STL应用与实现】2: 如何使用std::vector
- C++ openmp并行程序在多核linux上如何最大化使用cpu
- c++中使用boost::regex(由于标准库中版本过低,导致不支持多行,需手动编译添加最新版的boost库)
- [转]如何借助 TLS/SSL 确保套接字连接的安全(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用)
- 【C++ STL应用与实现】72: 标准库里的堆--如何使用标准库的heap算法
- boost::io_service 的使用 & 如何检查网络通讯正常?心跳包机制 or Detection of Half-Open (Dropped) Connections
- 如何在Visual Studio 2010中使用C++“准”标准库 Boost 1.49.0
- 【C++ STL应用与实现】95: 如何使用Allocator