当我使用boost regex编译我的程序时,我得到了一个编译错误,如下所示:
In file included from /usr/local/include/boost/regex/v4/regex.hpp:32:0, from /usr/local/include/boost/regex.hpp:31, from ProcessAffinityManager.cpp:38: /usr/local/include/boost/regex/v4/regex_workaround.hpp: In function 'size_t boost::re_detail::strcpy(char*, const char*)': /usr/local/include/boost/regex/v4/regex_workaround.hpp:199:37: error: 'sizeInBytes' was not declared in this scope
但是当我检查源文件regex_workaround.hpp
时,sizeInBytes
是一个参数,错误不应该在这里。
答案 0 :(得分:0)
我同意评论员的意见,即需要更多信息..
但是我在使用minGW 4.8.1的项目中遇到了完全相同的问题 经过一番调查后,我发现有人在我们的项目中添加了一个宏黑客:
#define strcpy_s(A,B,C) strcpy(A,C)
我想这个想法是为了解决VS和MinGW之间的兼容性问题。 VS定义" secure"许多C字符串函数的版本,例如strcpy_s(A,B,C)。 在Windows上进行编译时,许多库都使用这些版本的函数,但是对于旧版本的VS和MinGW而言它们都缺失了
Boost :: regex通过尝试为可能错过它的环境定义strcpy_s来解决此问题。它与试图强制strcpy_s调用使用strcpy
的丑陋黑客冲突如果您的问题与我的一样,解决方案是找到谁添加了strcpy_s hack并转向提供此类功能的解决方案