设置 iOS 项目以使用 eigen

Posted

技术标签:

【中文标题】设置 iOS 项目以使用 eigen【英文标题】:Set Up iOS project to use eigen 【发布时间】:2012-06-02 11:37:20 【问题描述】:

我正在尝试设置一个 ios 项目来编译一个名为 Eigen 的 C++ 库,用于线性代数数学。

我开始按照以下问题中的说明进行操作:

How to compile Eigen in iPhone

但还是有些事情我想不通。

    用户 Stafan 说要设置正确的编译器标志 (-mfpu=neon -mfloat-abi=softfp)。我在哪里设置这些标志?我已经发现要为单个文件设置标志,例如http://meandmark.com/blog/2011/10/xcode-4-setting-compiler-flags-for-a-single-file/。但是我需要为哪些文件设置此标志?尤其是 Eigen 库中的 c++ 文件没有出现在这里。 用户 Blukee 说他在构建设置中使用了 armv7 优化的拱门。在构建设置中,我在架构类别中看到一个绿色字段,上面写着 Standard(armv7) 是这样吗?

我刚刚创建了一个 ,,singleViewApplication'' 并希望在名为 MathLibary 的新 Objective C 类中使用 c++ 文件。因为有些人说,如果我将类命名为 MathLibary.hh 和 MathLibary.mm,则可能会混淆 Objective C 和 C++。 这个类看起来像

#import "MathLibary.hh"
#define EIGEN_DONT_VECTORIZE
#import "SVD.h"
@implementation MathLibary

@end

当我尝试运行应用程序时,构建失败,编译器会给出一些错误,例如: 在 SVD.h 文件的第 47 行,即:

typedef typename NumTraits<typename MatrixType::Scalar>::Real RealScalar;

错误应该是“类型名称”之后的限定名称

对我来说,听起来编译器试图将 SVD.h 编译为目标 c 文件,但它是 c++。

    如何更改编译器以编译用户界面的目标 c 文件和库中的 c++ 文件

希望有人能帮助我,非常感谢。

【问题讨论】:

【参考方案1】:

如果您想混合使用 ObjC 和 C++,您是否确保将文件重命名为具有“.mm”后缀? :)

【讨论】:

以上是关于设置 iOS 项目以使用 eigen的主要内容,如果未能解决你的问题,请参考以下文章

一个使用 Eigen 库和 jni 的简单 ndk 项目

构建使用 Eigen(用于线性代数的 C++ 模板库)的项目时出现编译器错误

Eigen学习

利用Eigen进行矩阵计算

Eigen 程序无法从 Visual Studio 编译,但从命令行编译成功

使用 Eigen 和 MEX 快速评估三角函数的性能瓶颈