rst*_*112 5 c++ dynamic-linking static-linking c++11 c++17
如果 C++11 应用程序使用的属于 C++17 库的所有面向公众的头文件和 API 都遵循 C++11 语法,是否可以针对 C++11 应用程序使用使用 C++17 构建的库. C++17 库的内部实现确实具有 C++17 特定功能。
它是静态链接还是动态链接有关系吗?
如果 C++11 应用程序使用的属于 C++17 库的所有面向公众的标头和 API 都遵循 C++11 语法,是否可以针对 C++11 应用程序使用使用 C++17 构建的库。
一般来说,这会导致灾难。在某些情况下,如果您幸运的话,它可能会起作用(例如,如果您不共享更改 ABI 的标准库对象,如果您在使用 API 时没有触发任何 ABI 差异等)。
相反,您想要做的是使用完全相同的编译器编译所有代码,包括编译器版本和编译器标志。即使如此,您也应该阅读编译器的文档,以了解有关依赖项和系统依赖项的静态/动态链接的更多可能问题。
C++17 库的内部实现确实具有 C++17 特定功能。
这本身并不是问题(事实上,许多 C++ 库都提供 C 接口),但您需要尊重编译器/平台文档的任何链接限制/问题。
静态链接与动态链接有关系吗?
相同的。对于大多数平台,它不应该改变混合 C++11 和 C++17 的问题,但您仍然需要处理常见问题。
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |