vtable 大小不匹配链接提升

vtable size mismatch linking boost

同事 运行 在 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 构建的。