【发布时间】:2015-08-04 20:58:09
【问题描述】:
我有一个库,它是 C 和 C++ 的静态库。
问题是该库与libstdc++ 链接。
在 Xcode 中,当我切换到 libc++(使用 C++11 功能并使用提到的 C++ 库)时,它会引发许多编译错误。
该库的作者说该库还没有为 C++11 做好准备。
还有办法同时使用吗?
【问题讨论】:
标签: c++ c++11 libstdc++ libc++
我有一个库,它是 C 和 C++ 的静态库。
问题是该库与libstdc++ 链接。
在 Xcode 中,当我切换到 libc++(使用 C++11 功能并使用提到的 C++ 库)时,它会引发许多编译错误。
该库的作者说该库还没有为 C++11 做好准备。
还有办法同时使用吗?
【问题讨论】:
标签: c++ c++11 libstdc++ libc++
您的第 3 方静态库应与编译时所针对的 C++ 库的同一版本链接。这不仅包括库的类型 (libstdc++),还包括主要/次要版本号,以确保 ABI 兼容性。任何不同的库版本都会让你在最好的情况下构建中断,或者在最坏的情况下让你发生奇怪的崩溃。在GCC manual 中阅读有关 ABI 版本控制的更多信息。
如果 3-rd 方库的接口只有POD types,您可以从静态库中创建一个共享库,然后在与 libc++ 链接的应用程序中使用它。
【讨论】: