我有一个库,它是 C 和 C++ 的静态库。
问题是该库链接到 libstdc++
。
在 Xcode 中,当我切换到 libc++
(使用 C++11 功能并使用提到的 C++ 库)时,它会抛出许多编译错误。
该库的作者说该库还没有为 C++11 做好准备。
还有办法同时使用两者吗?
最佳答案
您的第 3 方静态库应该链接到与其编译时所针对的相同版本的 C++ 库。这不仅包括库的类型 (libstdc++),还包括主要/次要版本号以确保 ABI 兼容性。任何不同的库版本都会让你要么在最好的情况下构建中断,要么在最坏的情况下导致奇怪的崩溃。在 GCC manual 中阅读有关 ABI 版本控制的更多信息.
如果第3方库的接口(interface)只有POD types ,您可以从静态库中创建一个共享库,然后从与 libc++ 链接的应用程序中使用它。
关于C++11 和链接到 libstdc++ 的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31819199/