SDL/OpenGL命令未在范围内设置?

SDL/OpenGL命令未在范围内设置?,opengl,scope,command,sdl,undefined,Opengl,Scope,Command,Sdl,Undefined,我正试图在mac上编写一个非常简单的sdl和gl程序来创建一个三角形,但它并没有真正起作用 (在c++中) 这里出了什么问题?如何防止进一步的命令未声明?看起来您只是在编译时没有链接到SDL库。只需添加适当的-l标志,它就可以工作了 EDIT:datenwolf指出,该错误不是由于缺少库造成的。但是,在修复标题时,仍应包括正确的库。:) 我看到您通过本地include语句包含了SDL头,即使用双引号而不是楔子。编译器消息指示在包含SDL/SDL.h时出错。您的SDL安装已中断,或者您意外地将空的

我正试图在mac上编写一个非常简单的sdl和gl程序来创建一个三角形,但它并没有真正起作用

(在c++中)


这里出了什么问题?如何防止进一步的命令未声明?

看起来您只是在编译时没有链接到SDL库。只需添加适当的-l标志,它就可以工作了


EDIT:datenwolf指出,该错误不是由于缺少库造成的。但是,在修复标题时,仍应包括正确的库。:)

我看到您通过本地include语句包含了SDL头,即使用双引号而不是楔子。编译器消息指示在包含
SDL/SDL.h
时出错。您的SDL安装已中断,或者您意外地将空的或不匹配的SDL/SDL.h放入源目录


在任何一种情况下,您都必须确保SDL的安装是有效的。

“未在范围内声明”是一条编译器消息,表示缺少函数声明。即缺少标题。链接器消息将是“未定义引用”。您假设
g++
使用
-GL
-GLU
标志做什么?你是说
-lGL
-lGLU
#include <iostream>
#include "SDL/SDL.h"
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>

/*INITIALIZE*/
void init()
{
    glClearColor(0.0,0.0,0.0,1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45,640.0/480.0,1.0,500.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

/*DISPLAY*/
void display()   // drawing
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_TRIANGLES);

    glVertex3f(0.0,2.0,-5.0);
    glVertex3f(-2.0,-2.0,-5.0);
    glVertex3f(2.0,-2.0,-5.0);

    glEnd();
}

/*MAIN*/
int main(int argc, char** argv) // arguments required
{
    SDL_Init(SDL_INIT_EVERYTHING); // initialize and setup sdl
    SDL_Surface* screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE|SDL_OPENGL);
    bool running = true;
    Uint32 start;
    SDL_Event event;
    init();

    while (running)
    {
        start = SDL_GetTicks();

        while (SDL_PollEvent(&event))
        {
            switch (event.type)
            {
                case SDL_QUIT:
                    running = false;
                    break;
            }
        }

        display();
        SDL_GL_SwapBuffers();
        if(1000/30 > (SDL_GetTicks() - start))
            SDL_Delay(1000/30 - (SDL_GetTicks() - start));
    }
    SDL_Quit();
    return 0;

}
Computer:sdlcode User$ g++ third.cpp -GL -GLU
third.cpp: In function ‘int main(int, char**)’:
third.cpp:34: error: ‘SDL_OPENGL’ was not declared in this scope
third.cpp:34: error: ‘SDL_SetVideoMode’ was not declared in this scope
third.cpp:55: error: ‘SDL_GL_SwapBuffers’ was not declared in this scope
Computer:sdlcode User$