我正在尝试在 Objective-C++ XCode 项目(适用于 Mac OSX)中编译 Eigen 3 库,它输出超过 200 个错误,就像链接器错误一样。我在下面放了一张图片来显示第一个错误输出。
我的项目正在使用 Objective-C 和 C++(实际上是一个 Bullet 物理实现),所以我
- 用 .mm 扩展名重命名了我的所有文件,
- 检查了项目设置中的“编译为 Objective-C++”,
- 尝试将“特殊”Eigen header (无扩展名)的类型更改为不同类型,
但没有任何效果...
#import
在我的程序文件中运行良好,因为我可以看到 XCode 识别了我的
Matrix4f eigenViewMatrix = Map<Matrix4f>(viewMatrix, 4, 4);
我想有一个标志需要添加,但我找不到什么以及在哪里。顺便说一下,我使用的是 LLVM GCC 4.2 编译器。
如果能得到一些帮助,我将非常感激。谢谢。
编辑
我在项目“build设置”中启用了 OpenMP 和 SSE,如本文所示:http://forum.kde.org/viewtopic.php?f=74&t=98401
但我找不到“自动矢量化”。
如果我包括
#include <iostream>
#include <Core>
#include <Dense>
在实现文件 (.mm) 中,与包含在全局头文件中相比,错误更少。现在错误仅涉及 Block.h 和 Memory.h。
最佳答案
嗯,经过经验测试,我终于发现 Eigen header 调用必须在所有内容之前。
在我的前缀 header (.pch)中,我进行了一些调用,所以我最终将其更改如下:
//
// Prefix header for all source files of the 'h[Oz] Bullet' target in the 'h[Oz] Bullet' project
//
#ifdef __OBJC__
#endif
#include <iostream>
#include <Core>
#include <Dense>
#import <Quartz/Quartz.h>
#import <OpenGL/CGLMacro.h>
#import <OpenGL/gluMacro.h>
希望它能对某人有所帮助。
关于c++ - 在 Objective-C(不是 iPhone)中编译 Eigen 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18639864/