gpt4 book ai didi

c++ - 在带有 brew 的 MacOS 上的链接时缺少 boost ICU 正则表达式符号

转载 作者:行者123 更新时间:2023-11-28 04:41:04 30 4
gpt4 key购买 nike

我已经更改了我的正则表达式以使用 ICU 库并在 OSX 上遇到链接问题。特别是我有一个 undefined symbol :

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 删除并重新安装了 icu4cboost。我检查了图书馆在正确的地方。我还检查了没有第二个 boost_regex_icu 库(没有找到)。

我使用 scons 作为构建系统,它找到了所有库。 header 也正确,因为代码编译正确,但在链接阶段失败。奇怪的是,只有这个符号丢失了,而不是 boost regex/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

brew 包:

  • boost:稳定 1.67.0(瓶装),HEAD
  • icu4c:稳定 61.1(瓶装),HEAD [仅桶装]

最佳答案

默认情况下,Brew 的 boost 包不支持 icu4c。它们必须安装为:

brew install boost --with-icu4c

或者如果已经安装:

brew reinstall boost --with-icu4c

在 boost 编译时请耐心等待,因为这似乎没有使用标准二进制文件。

在邮件列表/错误报告中有一些注释指出在 boost 安装期间应该检测到 icu4c,但看起来并没有。我安装 icu4c/boost 的顺序没有区别。只有上面的标志似乎有帮助。

关于c++ - 在带有 brew 的 MacOS 上的链接时缺少 boost ICU 正则表达式符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50186021/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com