Xcode 如何使用libc++;和libstdc++;用于一个项目中的不同库

Xcode 如何使用libc++;和libstdc++;用于一个项目中的不同库,xcode,unity3d,vuforia,Xcode,Unity3d,Vuforia,在这里输入链接描述目前我正在致力于在iOS项目中嵌入unity,我几乎完成了它。但是,我的库有问题 我在我的iOS项目中嵌入Unity + VuFuia,这意味着在构建C++标准库时,我必须使用LBC+++来获得VuFuia和Unity工作。 另一方面,我有一些旧库(libFMDB.a;lingos.a;libproj4.a;libShapekit.a;libSpatialDBKit.a;libspatialite.a;libsqlite3.a),它们应该在设置中使用libstdc++。如果我只

在这里输入链接描述目前我正在致力于在iOS项目中嵌入unity,我几乎完成了它。但是,我的库有问题

我在我的iOS项目中嵌入Unity + VuFuia,这意味着在构建C++标准库时,我必须使用LBC+++来获得VuFuia和Unity工作。 另一方面,我有一些旧库(libFMDB.a;lingos.a;libproj4.a;libShapekit.a;libSpatialDBKit.a;libspatialite.a;libsqlite3.a),它们应该在设置中使用libstdc++。如果我只是将libc++设置为我的构建设置,我将得到错误。

在这一点上,我应该怎么做才能使一切都符合要求


谢谢

不要这样做

为什么?

  • 根据所使用的名称篡改方案,这甚至可能不可能,因为
    libc++
    将具有与
    libstdc++
    相同的符号
  • 如果没有符号冲突,当从一个库中获取对象并将其与另一个库中的对象/函数混合时,可能会遇到未定义的行为
  • 结构将不兼容。内部类结构将以不同的方式实现或布局
  • libstdc++
    在iOS 12上不再可用。您的程序将不会在其上运行
  • 解决问题的正确方法是下载/编译库的更新版本。句号

  • 为什么不能直接使用
    libc++
    ?问题出在哪里还不清楚。此外,您应该知道,最新的SDK甚至不提供libstdc++,因此您无法在现代系统上运行所需的功能。@BradAllred我很抱歉我的描述不清楚。我不能使用libc++,因为lingos.a和其他一些库必须使用libstdc++。如果我将C++标准库设置为LBC+++,它将具有一致性错误:体系结构ARM64的未定义符号:“STD::Trace:+(char const *)”,引用于:GeOs::LoopTys::ListGOS: ToString(o)GeOS::GeoMetrix::DigeDeDeTestAr::PrdTe():LIGBEOS.(directedgestar-8A1632E441A524A8.o)libgeos.a(EdgeEndBundle.o)中的geos::operation::relate::EdgeEndBundle::print()使用
    libc++
    重新编译这些库!这与
    libc++
    libstdc++
    无关,它们都是等价的(从API的角度看)C++标准库的一致实现:BTW<代码> LBQLITE3是IOS SDK的一部分,因此您可以只使用提供的而不是自己的。