gpt4 book ai didi

c++ - 如何编译使用 C++11 库 API 的 C++03 项目?

转载 作者:搜寻专家 更新时间:2023-10-31 01:31:30 25 4
gpt4 key购买 nike

我需要使用共享库 A 及其使用 C++11 编译的 API。它在其 API 中使用 C++11 功能,如 std::mutexstd::shared_ptr。我无法控制库 A。

但是,我还需要使用使用库 A 的 API 的 C++03 编译我的代码。

我很确定这不能完成,因为我收到编译器错误,指出 std::mutexstd::shared_ptr 和其他在未找到 API。 (我的理解是,如果库 A 不使用 C++11 特定类型,那么我应该能够做到这一点。)

但我只是想确保没有我不理解的事情需要做,以便针对 C++11 库 A 编译我的代码。

所以问题是,我可以使用 C++03 针对共享库及其使用 C++11 的 API 编译我的代码吗?

最佳答案

在其边缘公开任何特定于 C++11 的功能的 API 在 C++03 中将无法使用。解决此问题的一种方法是为库构建一个 C++11 包装器,它将所有 C++11 特定的输入和输出转换为 C++03 兼容类型。例如,如果原始 C++11 库从其 API 返回一个 std::shared_ptr,则包装器库可以返回一个 boost::shared_ptr 或原始指针。 “Pimpl”习惯用法在实现包装器时可能会有所帮助,例如如果您需要为智能指针制作包装器,但根本不允许您的应用程序代码看到 std::shared_ptr

但必须问一个问题:为什么不为现有代码启用 C++11?

关于c++ - 如何编译使用 C++11 库 API 的 C++03 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45678063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com