【问题标题】:#ifdef not working properly?#ifdef 无法正常工作?
【发布时间】:2014-04-06 09:14:39
【问题描述】:

我遇到了 Xcode 5.1 的问题。如果我这样做,一切正常:

#include "glew.h"

但是一旦我尝试使其跨平台,它就会开始给出编译错误。

#if defined(_APPLE_) || defined(_MACH_)
#define OS_MACOSX
#endif

#ifdef OS_MACOSX
#include "glew.h"
#else
#include <GL/glew.h>
#endif

请帮助我理解这一点。

【问题讨论】:

  • “不存在”是指找不到该文件还是因为上述情况而没有包含该文件?

标签: c++ compilation cross-platform conditional-compilation


【解决方案1】:

听起来您只需要添加一个“GL”框架,或者在您的 Xcode 项目中提供一个适当的“标头搜索路径”。

您知道“&lt;GL/glew.h&gt;”文件的完整路径吗?如果是这样,您可以将完整路径添加到您的项目设置中。

你可以这样做:

【讨论】:

  • 它位于路径中没有GL/ 的目录中,这使得它很难解决(以可移植的方式)...
  • 嗨@MatsPetersson 您是否可以访问原始发帖人的机器,所以您知道他/她在.h 文件的完整路径末尾没有“GL/”?另外,+1 给你的好答案!
  • 好吧,我确实假设文件是​​它们“按照正常安装应该位于的位置”。当然,也可以更改安装位置,但这意味着为“仅限 Mac”编写的代码如果不更改就无法编译。
【解决方案2】:

您可能想要使用__APPLE__ 而不是_APPLE_。应该可以解决的。

哦,不要对 IDE 抱怨,这与 IDE 无关。这是关于 Apple 的开发人员决定将 GL 头文件(以及 CL 头文件)放在哪里!

【讨论】:

  • 非常感谢! GL 头文件也来自 windows/linux 库 (GLEW),在这种情况下,mac 有一个特殊版本的 GLEW,因此很麻烦。谢谢
猜你喜欢
  • 1970-01-01
  • 2013-07-31
  • 2016-12-01
  • 2016-05-03
  • 1970-01-01
  • 2016-09-01
  • 2012-07-11
  • 2018-04-08
  • 2017-04-20
相关资源
最近更新 更多