2017-07-22 26 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