2012-10-10 2 views
2

Можно создать дубликат:
FreeGLUT on Mac OS X LionMAC 10.7: Где файл gl.h?

Первый викторины: может кто-нибудь только, пожалуйста, объясните мне, почему я не смог найти файл gl.h где-нибудь на моем макинтоше?! Если на этот вопрос можно просто ответить, возможно, вам даже не нужно читать все остальное, но я не мог найти ответа в Интернете на этот (после нескольких часов исследований), кроме знаменитого «он интегрирован в os» или что-то вроде того.


Моя проблема в деталях:

У меня возникли проблемы с составлением файла .c с использованием OpenGL. Я просматривал веб часами, не найдя решения. Вот проблема:

Для тех, кто знает это программное обеспечение, я использую Webots (программное обеспечение для моделирования роботов), и я хотел бы реализовать физический плагин. Я скопировал код из уже существующего (и рабочего) плагина, чтобы попробовать его. Я компилирую с помощью web-узлов, которые используют gcc (мне пришлось установить gcc-компилятор, поскольку он больше не поставляется с Xcode).

Проблема заключается в том, что файл .c содержит заголовок «physical.h», который включает в себя файл OpenGL/gl.h, и затем я получаю сообщение об ошибке: «OpenGL/gl.h нет такого файла или directoy ».

Теперь я пытался много вещей:

  • сделать поиск gl.h: кажется, что doean't существует (я не могу найти его, либо вручную, либо с поиском искателя функция)

  • замены включают OpenGL/gl.h по GLUT/glut.h: Я получаю ошибку «gl.h и не glu.h нет такого фил или каталога», так как их включенный в glut.h

  • , связывающий библиотеки gl в файле makefile и каркасах

  • Возможно, все их комбинации, используя абсолютный или относительный путь!

С OpenGL и GLUT должны быть изначально установлены с ОС (я об использовании Lion 10.7.5) Я думаю, каждый нужный файл должен быть там. И для этого reaon я не могу найти способ загрузить этот якобы отсутствующий файл ...

Кроме того, мой коллега попытался и успешно скомпилировал его на Linux! Linux - отличная платформа, но я все еще люблю свой mac, поэтому, пожалуйста, позвольте мне надеяться, что есть другое решение, чем изменить для Linux!

Я думаю, что моя проблема заключается либо в Makefile, либо в физике.ч файл, так вот они:

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 и файл physical.h с абсолютным путем. Я не могу скомпилировать directy в терминале из-за ODE, который «интегрирован» в веб-сайты, почему я скомпилирован непосредственно в web-узлах.

+0

Вам необходимо добавить OpenGL Framework в свой проект. – datenwolf

+0

И это не сделано тем, что я написал в моем Makefile? то есть: FRAMEWORK: -framework OpenGL – Wat

ответ

5

Gl.h есть, хорошо - просто в /System/Library/Frameworks/OpenGL.framework/Headers. Либо используйте -framework OpenGL, либо добавьте -I /System/Library/Frameworks/OpenGL.framework/Headers в флагов компилятора. Предполагая, что ваш файл есть (что по умолчанию), вы должны найти его, и все должно работать!

+1

Спасибо за ваш ответ. Я на самом деле уже посмотрел в OpenGL.framework, но дело в том, что у меня нет директории «Заголовки». У меня только версия/A /, и там у меня есть «_CodeSignature», «Библиотеки» (содержащие некоторые библиотеки OpenGL, но без заголовков), OpenGL (исполняемый файл), каталог «Plugins», «Ресурсы». Ни один из них не содержит заголовочный файл. Считаете ли вы, что удаление и переустановка Xcode может помочь? Кстати, у меня есть Headers directoery в GLUT.framework, но только glut.h есть (и это включает gl.h и glu.h) – Wat

Смежные вопросы