2013-01-21 101 views
0

我是一個新手C程序員,這是我第一次與圖形工作。我得到了一些代碼,包括一些OpenGL功能可以正常工作在我的MacBook Pro(運行OS X 10.6.8版本),但它不會是運行Linux(CentOS的版本2.16.0)我的辦公室機器上編譯。在這兩種情況下,我都使用gcc。我在Mac上編譯時通過以下選項:OpenGL的C代碼在Mac OS X,但不能在Linux上

-lcurses -lX11 -lGL -lm -fast 
-I/usr/X11R6/include/ -I/usr/X11R6/include/GL -L/usr/X11R6/lib 
-L/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries 
-Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib 

當試圖在Linux上編譯以下選項

-lcurses -lX11 -lGL -lm 

我收到以下錯誤

cem_master.c:159: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token 
cem_master.c:160: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token 
cem_master.c:161: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token 

這是指下面的代碼行:

static WINDOW *mainwnd; 
static WINDOW *screen; 
WINDOW *my_win; 

什麼是錯的任何想法?如何去理解這個技巧?


在迴應的意見,這裏是從第一行導致該錯誤的部分源代碼的簡化版本。我切出大量的垃圾之間的包括和/ 顯示廢話 /部分,但是這仍然會產生錯誤。

#include <stdlib.h>  
#include <stdio.h> 
#include <math.h> 
#include <time.h> 
#include <GL/glx.h> 
#include <GL/gl.h> 
#include <unistd.h> 

/* Display Crap */ 
static WINDOW *mainwnd; 
static WINDOW *screen; 
WINDOW *my_win; 

float xcellwidth; 
float ycellwidth; 
int  current_getch; 
int  xplotoff; 
int  yplotoff; 

Display     *dpy; 
Window     root; 
XVisualInfo    *vi; 
Colormap    cmap; 
XSetWindowAttributes swa; 
Window     win; 
GLXContext    cx; 
XEvent     event; 
+0

郵政整個源文件,或至少所述片段從第一行到引起錯誤的行。 –

回答

0

WINDOWSCREEN來自ncurses庫。您需要#include <ncurses.h>才能使用它。

+0

看起來像我沒有ncurses。你知道我如何獲得/安裝它嗎?我需要管理員權限嗎? – kde8

+0

使用您的發行版的包管理器。安裝軟件包的dev(或devel)版本。您確實需要管理員權限才能安裝。有辦法解決這個問題(從你的$ HOME源代碼安裝),但我不推薦給初學者。 –

+0

太好了,非常感謝您的幫助! – kde8