一位同事在 Solaris 中链接某些内容时遇到了链接器警告:
ld: warning: symbol 'vtable for boost::system::error_category::std_category' has differing sizes:
(file blah.o value=0x24; file (...)/libboost_system.a(error_code.o) value=0x14
blah.o definition taken
。其中 [明显] 有问题的代码存在于 boost/system/error_code.hpp 中。 当用-std=c++11
编译时会发生这种情况,但不是用-std=c++98
。
从一开始就应该很明显,但我很密集。 我们最近从 C++98 切换到 C++14,但 boost 库是使用编译器的默认值 C++98 构建的。