这样的情况下有没有潜在的问题?
我的项目使用g++11.4编译,而我无法控制的所需动态库则使用g++8.2编译。
是的,这肯定有潜在的问题。实际的代码是最少的问题;你的CPU显然是GCC 8.2中支持的CPU,并且在G++11.4中仍然受支持。对于这些 CPU,调用约定保持不变。
潜在的问题是 glibc,尤其是其相当弱的版本控制。您不能针对特定版本,您的链接器将选择当时使用的操作系统(!)。并且他们的链接器选择了他们的操作系统当时使用的任何内容。 还有一个小问题
_GLIBCXX_USE_CXX11_ABI
- stdlibc++ 更改了 GCC5 周围的
std::string
的 ABI,并允许您在 C++11 和向后兼容性之间进行选择。您必须检查您是否使用与这些库相同的设置。