之前我编写了一个使用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有些微变化?