【问题标题】:Link iOS app against both libstdc++ and libc++将 iOS 应用程序与 libstdc++ 和 libc++ 链接
【发布时间】:2013-03-14 23:12:44
【问题描述】:

用例:我想使用使用 libstdc++(无法更改)的第 3 方静态库,因此我必须将我的应用程序与 libstdc++ 链接。现在,如果我想在自己的代码中使用 C++11 功能,我必须在 Xcode 中选择 libc++ 并另外链接 libstdc++ 以满足静态库。

我的问题是,即使我在“构建设置”中选择了 libc++ 并将“-lstdc++”添加到“其他链接器标志”(也通过“构建阶段 > 将二进制文件与库链接”进行了尝试),我仍然收到链接器错误对于后者,即用于第 3 方库引用的 libstdc++ 函数/类。

如何配置项目以链接两个 C++ 标准库?理论上应该是可能的,因为 libc++ 将在它自己的内联命名空间std::__1 中。

【问题讨论】:

  • 你检查过this answer吗?它可能会提示您如何解决您的问题。就个人而言,我认为同时使用 libstdc++ 和 libc++ 会很痛苦,但一切皆有可能!有没有什么办法可以从那些 3rd 方静态库中获取源代码并使用 libc++ 编译它们?我遇到了这个问题,但幸运的是我可以访问源代码,所以我只是用“-stdlib=libc++”重新编译了所有内容,链接器错误就消失了。

标签: c++ ios xcode c++11 linker


【解决方案1】:

我刚刚遇到了这个问题,我的解决方案是在其他标志上添加 -lstdc++,而不是添加 /usr/lib/libstdc++.dylib

我的直觉是,当 xcode/clang 设置了 -std=c++ 时,需要显式加载旧的 .dylib。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    相关资源
    最近更新 更多