2012-10-10 90 views
2

可能重複:
FreeGLUT on Mac OS X LionMAC 10.7:gl.h文件在哪裏?

首先QUIZZ:任何人都可以只請解釋一下我爲什麼我不能夠找到gl.h文件我的Mac上的任何地方!如果這個問題可以簡單地回答,也許你甚至不需要閱讀其餘的內容,但是我在網上找不到任何答案(經過幾小時的研究),除了着名的「它被集成到操作系統中」或類似的東西。


我的問題詳細:

我有使用OpenGL .c文件的編制問題。我已經瀏覽了幾個小時而沒有找到任何解決方案。這是問題:

對於那些知道這個軟件,我使用Webots(一個機器人模擬軟件),我想實現一個物理插件。我從已經存在的(和工作)插件複製代碼,只是爲了試用它。我正在編譯使用gcc的webots(我不得不安裝gcc編譯器,因爲它不再與Xcode一起提供)。

現在,問題是.c文件包含一個「physics.h」頭文件,其中包含OpenGL/gl.h文件,然後我得到錯誤:「OpenGL/gl.h。no such file or directoy 」。

現在,我已經嘗試了許多事情:

  • 做了gl.h搜索:現在看來,這doean't存在(我無法找到它,手動或使用取景器搜索功能)

  • 葡萄糖轉運/ glut.h更換包括的OpenGL/gl.h:我得到的錯誤「gl.h和glu.h沒有這樣的FIL或目錄」列入glut.h因爲他們的

  • 鏈接gl庫中的makefile和框架以及

  • 可能是所有這些組合,使用絕對或相對路徑!

由於OpenGL和GLUT都應該爲能與操作系統進行本地安裝的(我使用獅子10.7.5)我想每一個需要的文件應該在那裏。而對於這個重做,我找不到方法來下載這個假設丟失的文件...

此外,我的一位同事試圖在Linux上成功編譯它! Linux是一個很好的平臺,但我仍然喜歡我的Mac,所以請讓我希望有另一種解決方案,而不是改變爲Linux!

我認爲我的問題在於Makefile或物理。.h文件,所以在這裏,他們是:

Physic.h

#ifndef PHYSICS_H 
#define PHYSICS_H 
#include <ode/ode.h> 
#ifdef WIN32 
#include <windows.h> 
#endif 
#ifndef MACOS 
#include <GL/gl.h> 
#else 
#include <OpenGL/gl.h> 
#endif 

/* callback functions to be implemented in your physics plugin */ 
#ifdef __cplusplus 
extern "C" { 
#endif 
#ifdef _MSC_VER 
#define DLLEXPORT __declspec(dllexport) 
#else 
#define DLLEXPORT 
#endif 
DLLEXPORT void webots_physics_init(dWorldID,dSpaceID,dJointGroupID); 
DLLEXPORT int webots_physics_collide(dGeomID,dGeomID); 
DLLEXPORT void webots_physics_step(); 
DLLEXPORT void webots_physics_step_end(); 
DLLEXPORT void webots_physics_cleanup(); 
DLLEXPORT void webots_physics_draw(); 
DLLEXPORT void webots_physics_predraw(); 

/* utility functions to be used in your callback functions */ 
#ifndef LINUX 
extern dGeomID (*dWebotsGetGeomFromDEFProc)(const char *); 
extern dBodyID (*dWebotsGetBodyFromDEFProc)(const char *); 
extern void (*dWebotsSendProc)(int,const void *,int); 
extern void* (*dWebotsReceiveProc)(int *); 
extern void (*dWebotsConsolePrintfProc)(const char *, ...); 
extern double (*dWebotsGetTimeProc)(); 
#define dWebotsGetGeomFromDEF(DEFName) (*dWebotsGetGeomFromDEFProc)(DEFName) 
#define dWebotsGetBodyFromDEF(DEFName) (*dWebotsGetBodyFromDEFProc)(DEFName) 
#define dWebotsSend(channel,buff,size) (*dWebotsSendProc)(channel,buff,size) 
#define dWebotsReceive(size_ptr)   (*dWebotsReceiveProc)(size_ptr) 

#if defined(__VISUALC__) || defined (_MSC_VER) || defined(__BORLANDC__) 
#define dWebotsConsolePrintf(format, ...) (*dWebotsConsolePrintfProc)(format, __VA_ARGS__) 
#else 
#define dWebotsConsolePrintf(format, ...) (*dWebotsConsolePrintfProc)(format, ## __VA_ARGS__) 
#endif 

#define dWebotsGetTime()     (*dWebotsGetTimeProc)() 
#else 
dGeomID dWebotsGetGeomFromDEF(const char *DEFName); 
dBodyID dWebotsGetBodyFromDEF(const char *DEFName); 
void dWebotsSend(int channel,const void *buffer,int size); 
void *dWebotsReceive(int *size); 
void dWebotsConsolePrintf(const char *format, ...); 
double dWebotsGetTime(); 
#endif 
#ifdef __cplusplus 
} 
#endif 

#endif /* PHYSICS_H */ 

的Makefile:

### 
### Standard Makefile for Webots physics plugins 
### 
### Supported platforms: Windows, Mac OS X, Linux 
### Supported languages: C, C++ 
### 
### Authors: Olivier Michel - www.cyberbotics.com 
### Revised: Yvan Bourquin - September 30th, 2009. 
### 
### Uncomment the variables to customize the Makefile 

### -----C Sources----- 
### 
### if your plugin uses several C source files: 
C_SOURCES = my_contact_p_physics.c 

### -----C++ Sources----- 
### 
### if your plugin uses several C++ source files: 
# CPP_SOURCES = my_plugin.cpp my_clever_algo.cpp my_graphics.cpp 
###  or 
# CC_SOURCES = my_plugin.cc my_clever_algo.cc my_graphics.cc 

FRAMEWORK = -framework OpenGL -framework GLUT 

### -----Options----- 
### 
### if special CFLAGS are necessary, for example to set optimization level or 
### to find include files: 
#CFLAGS=-O3 -I/System/Library/Frameworks/OpenGL.framework 
### 
### if your plugin needs additional libraries: 
LIBRARIES=-L/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries -llibGL -llibGLU 


### Do not modify: this includes Webots global Makefile.include 
space := 
space += 
WEBOTS_HOME_PATH=$(subst $(space),\ ,$(strip $(subst \,/,$(WEBOTS_HOME)))) 
include $(WEBOTS_HOME_PATH)/resources/projects/default/plugins/physics/Makefile.include 

PS:在 「my_contact_p_physics.c」(.c文件我試圖很難編譯)我只是包含一個ODE/ode.h文件和physics.h文件的絕對路徑。我無法在終端中編譯directy,因爲它可以「集成」到網絡中,因此我直接在網絡中編譯。

+0

您需要將OpenGL框架添加到您的項目中。 – datenwolf

+0

這不是由我在我的Makefile中寫的內容完成的嗎?即:框架:-framework OpenGL – Wat

回答

5

gl.h在那裏,好吧 - 只需在/System/Library/Frameworks/OpenGL.framework/Headers。可以使用-framework OpenGL,或者將-I /System/Library/Frameworks/OpenGL.framework/Headers添加到編譯器標誌中。假設你的文件在那裏(默認情況下),你應該找到它,並且都應該工作!

+1

感謝您的回答。我其實已經看過OpenGL.framework,但事情是我沒有「Headers」目錄。我只有Version/A /,並且在那裏有「_CodeSignature」,「Libraries」(包含一些OpenGL庫,但沒有頭文件),OpenGL(可執行文件),「Plugins」目錄,「Resources」目錄。它們都不包含任何頭文件。你認爲卸載並重新安裝Xcode可以提供幫助嗎?順便說一下,我在GLUT.framework中有一個頭文件directoery,但只有glut.h在那裏(它包含gl.h和glu.h) – Wat

相關問題