出于某种原因,boost :: regex会重载我的应用程序并且它会在没有错误的情况下冻结,但它编译得很好。例如,这段代码断然失败。我究竟做错了什么?我更新以提升1.47以查看它是否是DLL错误,但它仍然无效。我可以获得一个示例程序来测试boost :: regex吗?
static const boost::regex expression("^[0-9]+");
std::string str = "123a1";
std::cout << boost::regex_search(str.c_str(), expression);
答案 0 :(得分:0)
要做的第一件事是看看你的Boost版本是否支持 穿线。编译和运行类似下面的内容应该 告诉你:
#include <iostream>
#include <boost/regex.hpp>
int
main()
{
#ifdef BOOST_HAS_THREADS
std::cout << "Boost has threads" << std::endl;
#else
std::cout << "Boost doesn't support threads" << std::endl;
#endif
return 0;
}
第二件事是验证是否满足所有要求。
您刚刚发布了实际的行,而不是它们所在的上下文
执行。如果第一行在命名空间范围内,那么您应该没问题
(除非你已经开始将构造函数线程化为静态对象,
在输入main
之前:不要这样做。如果第一行有阻止
范围(即在一个函数中),那么你只有在第一次调用时才可以
此功能在线程开始之前发生。 (据我所知,
使用g ++,即使第一行具有块范围,你也应该没问题,但是
我不确定。)
答案 1 :(得分:0)
经过一些工作后,我从BoostPro中删除了boost安装并自行编译了boost,现在它可以工作了。问题是BoostPro没有安装所有的DLL,我想当它问我缺少BoostPro错误的DLL(boost_regex-vc100-mt-1_47.dll
而不是boost_regex-vc100-mt-gd-1_47.dll
)时。获得正确的DLL后,一切正常。感谢您帮助解决此问题!