0

我是一名新手 C 程序员,这是我第一次使用图形。我得到了一些代码,其中包含一些在我的 MacBook Pro(运行 OS X 版本 10.6.8)上正常工作的 OpenGL 功能,但它无法在运行 Linux(CentOS 版本 2.16.0)的办公机器上编译。在这两种情况下,我都使用 gcc。在 Mac 上编译时,我通过了以下选项:

-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 和 / Display Crap / 部分之间删掉了很多垃圾,但这仍然会产生错误。

#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;
4

1 回答 1

0

WINDOW并且SCREEN来自ncurses图书馆。你需要#include <ncurses.h>使用它。

于 2013-01-22T21:49:11.123 回答