C++ 14/17项目是否可以使用使用C++ 11标准编译的二进制库,或者源代码是否需要重新编译?

Gre*_*reg 9 c++ standards c++-standard-library c++11 c++14

可以在c ++ 14/17项目中使用使用C++ 11编译的二进制文件吗?那个c ++ 17项目中的c ++ 14二进制库怎么样?

或者是否需要使用与项目相同的标准更新和重新编译源代码?

有没有其他方法可以在新标准项目中包含旧的标准C++库?

Kla*_*aus 4

C++ 标准与二进制文件格式无关。这仅取决于编译器/链接器和操作系统。因此,如果编译器供应商更改了 ABI(应用程序二进制接口),则不能简单地将各个部分链接在一起。

正如您可以在此处阅读的,仅与 gcc 相关:

https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html

gcc 在 gcc5.1 中引入了新的 ABI。可以在此处找到 gcc 库版本的历史记录以及对 ABI 更改的评论:

https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html

因此,从一个 C++ 版本更改为另一个版本并不会更改 ABI,但更改编译器可以。