在带有brew的MacOS上链接时缺少增强ICU正则表达式符号
Missing boost ICU regex symbol at link time on MacOS with brew
我已经更改了我的正则表达式以使用 ICU 库并在 OSX 上遇到链接问题。 特别是我有一个未定义的符号:
Undefined symbols for architecture x86_64:
"boost::basic_regex<int, boost::icu_regex_traits>::do_assign(int const*, int const*, unsigned int)", referenced from:
我有适当的链接库:-lboost_regex -licui18n -licuuc -licudata
.
我使用 brew 删除并重新安装了icu4c
和boost
.我检查了库在正确的位置。我还检查了没有第二个boost_regex_icu库(没有找到(。
我使用scons
作为构建系统,它找到了所有的库。标头也是正确的,因为代码编译正确,但在链接阶段失败。奇怪的是,缺少的只有一个符号,而不是增强正则表达式/ICU 库的其余部分。
我可能做错了什么?
我的完整链接行:g++ -o build/libleaf_lang.dylib -rpath @executable_path -install_name @rpath/libleaf_lang.dylib -dynamiclib build/lang/assign_statement.os build/lang/cerr.os build/lang/class_typer.os build/lang/context.os build/lang/conversion_applicator.os build/lang/declaration.os build/lang/do_statement.os build/lang/dump.os build/lang/error_statement.os build/lang/expression.os build/lang/expression_statement.os build/lang/expression_visitor.os build/lang/fail_statement.os build/lang/for_statement.os build/lang/import_statement.os build/lang/init_statement.os build/lang/intr_type.os build/lang/loop_flow_statement.os build/lang/module.os build/lang/module_loader.os build/lang/noop_statement.os build/lang/return_statement.os build/lang/scope.os build/lang/scope_ref.os build/lang/serial.os build/lang/serial_expression.os build/lang/serial_type.os build/lang/statement_block.os build/lang/statement.os build/lang/statement_importer.os build/lang/statement_visitor.os build/lang/type_converter.os build/lang/type_identifier.os build/lang/type_manager.os build/lang/typer.os build/lang/type_ref.os build/lang/type_spec.os build/lang/typedef_statement.os build/lang/var_statement.os build/lang/expression_typer/builtin.os build/lang/expression_typer/common.os build/lang/expression_typer/fields.os build/lang/expression_typer/funccall.os build/lang/expression_typer/funcdefn.os build/lang/expression_typer/funccall_ctor.os build/lang/expression_typer/funccall_type.os build/parser/intr_type_parser.os build/parser/node_parser.os build/parser/node_converter.os build/parser/dump.os build/parser/source.os build/platform/platform.os build/platform/gnu_linux_x86_64.os -Lbuild/build/lib -Lsrc/build/lib -L/usr/local/Cellar/boost/1.67.0_1/lib -Lbuild -Lsrc -L/usr/local/Cellar/gmp/6.1.2/lib -lboost_unit_test_framework -lboost_program_options -lboost_regex -lgmp -lgmpxx -lboost_filesystem -lboost_system -lyaml-cpp -licui18n -licuuc -licudata -lleaf_util
冲泡包:
- 提升:稳定 1.67.0(瓶装(,头部
- ICU4C:稳定61.1(瓶装(,头部[仅桶]
默认情况下,Brew 的 boost 包不是使用 icu4c 支持的。它们必须安装为:
brew install boost --with-icu4c
或者,如果已安装:
brew reinstall boost --with-icu4c
在 boost 编译时要耐心等待,因为这似乎不使用标准的二进制文件。
在邮件列表/错误报告中有一些注释,应该在 boost 的安装过程中检测到 icu4c,但似乎没有。我安装 icu4c/boost 的顺序没有区别。只有上面的标志似乎有所帮助。
- 无法将结构注册为增强几何体3D点
- 增强基于 XML class_id的反序列化
- 增强精神解析器规则以检测语句中的特殊结尾
- C++ 使用增强正则表达式库时断言崩溃
- 增强精神 X3:错误:在"..."中没有名为"大小"的类型
- 如何包装(撰写)增强 hana 地图并访问括号运算符(运算符 [])?
- 有没有办法在C ++中检测汉字?(使用增强)
- 如何将增强MSM与增强信号结合使用?
- 如何在 Linux for Windows 上通过 MinGW 构建静态 ICU 的 Boost
- 如何使用增强::几何计算多边形的旋转固体体积?
- 复制部分文件的C++/增强方式
- 增强 ASIO 和串行端口异步读取
- 增强 Hana index_if和类型
- 增强超几何测试
- 如何修改增强 hana 结构的成员
- 检测 ICU 库在 VS2017 中失败
- 如何调整ICU的UnicodeString::caseCompare(或获得相同的效果)
- 增强纤维work_stealing屏障会导致段错误
- 在带有brew的MacOS上链接时缺少增强ICU正则表达式符号
- 在Win32上增强icu u32_regex内存泄漏/缓存