pococ++中未定义的符号

Undefined symbol in Poco C++

本文关键字:符号 未定义 pococ++      更新时间:2023-10-16

我以前编译了一个简单的命令行程序,使用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上运行这个)。

EDIT:我不确定原因,但是重新安装--c++11选项打开修复了这个问题。例如:

brew install poco --c++11

也许从旧版本的c++标准到c++ 11, c++的名字会有细微的变化?

c++没有应用程序二进制接口。这导致了许多令人头疼的问题,包括当人们升级编译器版本时强迫他们重新编译。相同的编译器,不同的版本,不同的名称混淆。这就是为什么大多数库都有一个C接口…由于历史原因,C接口在所有已知平台上都有稳定的名称混淆。

http://morpher.com/documentation/articles/abi/c++ ABI问题列表

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

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