小编Jan*_*gel的帖子

OS X:boost ++ regex在静态和动态链接版本之间发生冲突 - > EXC_BAD_ACCESS

我有一个OS X包,静态链接boost ++ regex库.这个包被加载到一个主机应用程序中,该主机应用程序本身加载了一个dylib,它包含另一个版本的boost ++ regex.

当我尝试在我的包中创建一个正则表达式时:

regex expr(exprString, icase);
Run Code Online (Sandbox Code Playgroud)

我遇到了崩溃:

例外类型:EXC_BAD_ACCESS(SIGSEGV)

例外代码:EXC_I386_GPFLT

调用堆栈显示我的bundle试图调用boost :: re_detail :: basic_regex_parser而不是来自我的bundle的静态链接的boost版本,而是来自主机应用程序的boost版本.

调用堆栈:

0   libProToolsInterplayOption.dylib    0x0000000114c06c9f boost::re_detail::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::parse_extended() + 15
1   com.my_bundle.AAX   0x0000000125f802af boost::re_detail::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::parse(char const*, char const*, unsigned int) + 575
2   com.my_bundle.AAX   0x0000000125f6f412 boost::re_detail::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int) + 130
3   com.my_bundle.AAX   0x0000000125f6f217 boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int) + 487
4   com.my_bundle.AAX   0x0000000125dd027b boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> …
Run Code Online (Sandbox Code Playgroud)

c++ boost dynamic-linking static-linking

5
推荐指数
0
解决办法
80
查看次数

标签 统计

boost ×1

c++ ×1

dynamic-linking ×1

static-linking ×1