【发布时间】:2012-05-23 00:13:27
【问题描述】:
问题可能涉及使用 Apple 的 LLVM 3.1 编译器,我确信可以通过禁用 NEON 来解决。但是我们想使用 NEON。
我也很肯定这是我在 XCode 中设置的错误,但它可能与 Apple 有关。真的,我只是在寻求一些正确方向的提示。
/Eigen/src/Core/util/Macros.h
188:Unknown type name 'namespace'
188: Expected ';' after top level declarator
/Eigen/Core
144:'cerrno' file not found
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/3.1/include/arm_neon.h
55: Unknown type name 'float32_t'
该文件中的每个实例都会出现此缺少的 float32_t 错误。尽管第 33 行 typedef 显然已经完成。
更新:
如果我强制#define EIGEN_NO_DEBUG,那么剩下的唯一错误就是缺少 cerrno。事实上,似乎所有的 cXXX 库都丢失了(例如 cstdlib)。但是,如果我将它们包含在 Eigen 之外,它们就会起作用。
【问题讨论】:
-
第一个错误让我认为您正在使用 clang 而不是 clang++ 进行编译,或者至少使用 c 编译器而不是 c++ 编译器。
-
我包含的一些 C++ 文件(包括 Eigen)是一个 .mm 文件,所以我认为它会使用 clang++。我还没弄清楚如何告诉 XCode 向我显示它的编译器日志,所以我真的看到它在做什么。
-
感谢 sharth。问题被发现了。在“SupportingFiles”下是 main.m。这意味着 clang 被用于编译包含文件的 main.m,并最终导致 Eigen 被错误的编译器编译。我很惊讶没有再出现一百万个错误。将 main.m 重命名为 main.mm,问题解决。我还不能回答我自己的问题... +1 rep short.
标签: ios xcode clang eigen clang++