2012-10-10 4 views
2

Possible en double:
FreeGLUT on Mac OS X LionMAC 10.7: Où se trouve le fichier gl.h?

Première quizz: quelqu'un pourrait-il simplement me expliquer pourquoi s'il vous plaît je ne suis pas en mesure de trouver le fichier gl.h partout sur mon mac! Si cette question peut simplement être répondue peut-être vous n'avez même pas à lire le reste, mais je n'ai pas trouvé de réponse sur le web à celui-là (après des heures de recherche), sauf le fameux "c'est intégré dans l'os" ou quelque chose comme ca.


Mon problème en détail:

je rencontre un problème avec la compilation d'un fichier .c en utilisant OpenGL. J'ai parcouru le web pendant des heures sans trouver de solution. Voici le problème:

Pour ceux qui connaissent ce logiciel, j'utilise Webots (un logiciel de simulation de robot) et j'aimerais implémenter un plugin physique. J'ai copié le code d'un plugin déjà existant (et fonctionnant), juste pour l'essayer. Je compile avec webots, qui utilise un gcc (j'ai dû installer un compilateur gcc puisqu'il ne vient plus avec Xcode).

Maintenant, le problème est que le fichier .c contient un entête "physics.h" qui inclut le fichier OpenGL/gl.h et j'obtiens alors l'erreur: "OpenGL/gl.h. ".

Maintenant, je l'ai essayé beaucoup de choses:

  • faire une recherche pour gl.h: il semble qu'il existe doean't (je ne peux pas le trouver, que ce soit manuellement ou avec la recherche de Recherche fonction)

  • remplaçant include OpenGL/gl.h par GLUT/glut.h: Je reçois l'erreur "gl.h et glu.h pas de fil ou un répertoire" depuis leur inclus dans le glut.h

  • reliant les bibliothèques gl dans le fichier makefile et les frameworks ainsi

  • Probablement toute la combinaison de ceux-ci, en utilisant le chemin absolu ou relatif!

Depuis OpenGL et GLUT sont censés être nativement installé avec OS (je suis sur l'utilisation du Lion 10.7.5) Je suppose que tous les fichiers nécessaires devrait être là. Et pour cette raison, je ne peux pas trouver un moyen de télécharger ce fichier prétendument manquant ...

De plus un de mes collègues a essayé et réussi à le compiler sur Linux! Linux est une excellente plate-forme, mais j'aime toujours mon mac, alors s'il vous plaît laissez-moi espérer qu'il existe une autre solution que de changer pour Linux!

Je pense que mon problème réside soit dans le Makefile, soit dans le Physic.fichier h, alors les voici:

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: Dans le "my_contact_p_physics.c" (le fichier .c Je suis si difficile à compiler), j'inclue simplement un fichier ODE/ode.h et le fichier physics.h avec un chemin absolu. Je ne peux pas compiler directement dans le terminal à cause de l'ODE qui "s'intègre" dans les webots, raison pour laquelle je compile directement dans les webots.

+0

Vous devez ajouter le Framework OpenGL à votre projet. – datenwolf

+0

Et ce n'est pas fait par ce que j'ai écrit dans mon Makefile? c'est-à-dire: CADRE: -framework OpenGL – Wat

Répondre

5

Le gl.h est là, d'accord - Juste dans/System/Library/Frameworks/OpenGL.framework/Headers. Soit utiliser -framework OpenGL, soit ajouter -I /System/Library/Frameworks/OpenGL.framework/Headers aux drapeaux du compilateur. En supposant que votre fichier est là (ce qui est, par défaut), vous devriez le trouver, et tout devrait fonctionner!

+1

Merci pour votre réponse. J'ai déjà regardé dans OpenGL.framework mais le fait est que je n'ai pas de répertoire "Headers". Je n'ai que Version/A/et j'ai "_CodeSignature", "Bibliothèques" (contenant des bibliothèques OpenGL mais pas d'en-têtes), OpenGL (exécutable), répertoire "Plugins", répertoire "Ressources". Aucun d'entre eux ne contient de fichier d'en-tête. Pensez-vous que désinstaller et réinstaller Xcode pourrait vous aider? En passant, j'ai une headerery Headers dans GLUT.framework, mais seulement glut.h est là (et il y a gl.h et glu.h) – Wat

Questions connexes