gpt4 book ai didi

c++ - Poco C++ 中的 undefined symbol

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:17:25 25 4
gpt4 key购买 nike

我之前编译了一个简单的命令行程序,它使用了 Poco C++(顺便说一句,我喜欢它)。该程序完美运行了几个月。

我的电脑上肯定有一些变化,因为现在当我运行程序时,我收到以下错误。

dyld: Symbol not found: __ZN4Poco4Util11Application12handleOptionERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEESA_
Referenced from: /Users/me/bin/sqlmerge
Expected in: /usr/local/opt/poco/lib/libPocoUtil.16.dylib
in /Users/me/bin/sqlmerge

有人能告诉我为什么会这样吗?我使用 Poco 1.4.6 编译并使用 Poco 1.4.6 运行,尽管出于某种原因我的计算机中缺少 Poco,我不得不使用 brew install poco 重新安装(我显然是在一台 Mac)。

编辑:我不确定原因,但在打开 --c++11 选项的情况下重新安装可以解决问题。例如:

brew install poco --c++11

也许 C++ 名称修改从旧版本的 C++ 标准到 C++11 略有变化?

最佳答案

C++ 没有应用程序二进制接口(interface)。这会导致很多令人头疼的问题,包括如果人们升级编译器版本则强制他们重新编译。相同的编译器,不同的版本,不同的名称修改。这就是为什么大多数库都有 C 接口(interface)的原因。由于历史原因,C 接口(interface)在所有已知平台上都有稳定的名称修改。

http://morpher.com/documentation/articles/abi/ C++ ABI issues list

Herb Sutter 提出了 C++ 的稳定平台 ABI。所以帮助可能正在路上:-)

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4028.pdf

关于c++ - Poco C++ 中的 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24858335/

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