【问题标题】:Armadillo C++ library - C++11 compiler required errorArmadillo C++ 库 - C++11 编译器需要错误
【发布时间】:2021-08-24 16:13:14
【问题描述】:

我正在使用带有 Xcode 12.4 的 MacOS 10.15.7,我想在我的 iOS Swift 项目中使用 Armadillo 库。所以首先我通过 Homebrew 安装了犰狳。

犰狳安装在路径/usr/local/Cellar/armadillo/

我在路径/usr/local/Cellar/armadillo/10.5.1/include 中找到了头文件,在路径/usr/local/Cellar/armadillo/10.5.1/lib 中找到了库文件

在Xcode项目中,Build settings我在Header Search path和Library search path中提供了上述路径。

我的错误低于三个。

  • /usr/local/Cellar/armadillo/10.5.1/include/armadillo_bits/compiler_check.hpp:50:4: error: "*** C++11 compiler required; enable C++11 mode in your compiler, or use an earlier version of Armadillo"
  • /usr/local/Cellar/armadillo/10.5.1/include/armadillo:23:10: error: 'cstdlib' file not found #include <cstdlib>
  • <unknown>:0: error: failed to emit precompiled header

不知道如何继续.. 有什么建议吗???

【问题讨论】:

  • 您是否尝试过按照错误消息中的建议并“使用早期版本的犰狳”?查看 Armadillo 9.900 的源代码,C++11 的使用是可选的。在 Armadillo 10.5(您正在使用的版本)中,C++11 是强制性的。

标签: swift xcode c++11 armadillo bridging-header


【解决方案1】:

您将无法轻松做到这一点。 Swift 还不支持 C++ 互操作,但这是一个长期目标。您可以在 Swift git 存储库中的 C++ Interop Manifesto 中阅读有关内容。你现在能做的最好的事情就是用 C++ 围绕你想要调用的任何 C++ 函数编写一个 extern "C" 包装器,然后将你的包装器导入到 Swift 中。由于您使用的是 Xcode 项目,我建议您尝试类似this

或者,根据您需要犰狳的用途,您也许可以不用它。如果你只需要做线性代数,Apple 在 Accelerate 中包含 LAPACK(参见 here)和 BLAS(参见 here),无需安装任何东西即可在所有 Apple 平台上使用。这对您来说甚至可能很熟悉,因为犰狳通过 LAPACK 进行矩阵分解。如果您正在寻找集成,还有 Quadrature(请参阅 here)。我对这些都有很好的体验。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多