2017-07-22 29 views
-2

我在Xcode 8.3.2中使用SDL2(最新的OSX二进制文件),C++和OpenGL。如果我只是从代码中调用SDL2函数,该项目会很好地构建。但是,当我在代码中包含任何OpenGL函数调用时,它将无法编译。我已经在文件头中包含了<OpenGL/gl3.h>。但我正在逐渐编译过程中出现以下错误,每当我在代码中调用任何OpenGL的方法:在SDL项目中调用OpenGL函数使其无法在OSX下编译

enter image description here 相关代码:

在Display.h

#ifndef Display_h 
#define Display_h 

#include <iostream> 
#include <SDL2/SDL.h> 
#include <OpenGL/gl3.h> 
... 

在Display.cpp:

void Display::Clear(float r, float g, float b, float a) 
{ 
    glClearColor(r,g,b,a); 
} 

我运行OSX 10.12

+0

请阅读[我如何问一个好问题?](https://stackoverflow.com/help/how-to-ask)和[如何创建一个最小,完整和可验证示例](https:/ /stackoverflow.com/help/mcve)。 – Rabbid76

回答

0

问题已解决。我需要在项目的“Build Phases”>“Link Binary With Libraries”下添加OpenGL框架。我已经为SDL2做了这个。但不知道我也需要为OpenGL做同样的事情。

+0

是的,当然你必须。事实上,如果递归依赖关系隐式地被隐藏在幕后,那实际上是一件非常糟糕的事情;它可能会更方便。但是,在明确的情况下,错误消息(在运行时也是如此)更容易理解,因为作为开发人员,您特别知道程序中的内容以及哪些内容。 – datenwolf

相关问题