SDL_SetVideoMode:未找到标识符

3

我在使用SDL库时遇到了问题。我正在使用VS2012 Ultimate,并且实际上正在使用这个教程:http://lazyfoo.net/tutorials/SDL/01_hello_SDL/index2.php来设置一切,我已经按照步骤做了几次,但我仍然有问题,这是我的代码,非常简单:

#include <iostream> 
#include <SDL.h>

SDL_Surface * ekran = NULL;

int main (int argc, char *args [] )
{
   SDL_Init( SDL_INIT_EVERYTHING );
   ekran = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE );
   SDL_Flip( ekran );
   SDL_Delay( 2000 );
   SDL_Quit();
   return 0;
} 

我正在遇到以下错误:
error C3861: 'SDL_SetVideoMode': identifier not found
error C3861: 'SDL_Flip': identifier not found

你的编译/链接命令是什么? - Mats Petersson
你使用的是哪个版本的SDL? - Kaslai
2
我猜你安装了SDL 2.0.3,版本1和2的API非常不同。然而,lazyfoo.net也提供了关于版本2的指南。 - cbel
2个回答

6
以下是如何在SDL2中替换SDL_SetVideoMode()的示例。为了比较而将旧的初始化SDL方式注释并保留,同时留下新的方式。基本上,SDL2创建一个具有标题的窗口,然后附加到其上面的表面,而SDL1仅创建一个表面,然后调用窗口管理器来命名它。
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
    fprintf(stderr, "SDL video init failed: %s\n", SDL_GetError());
    return 1;
}

// SDL_Surface *screenSurface = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 32, SDL_SWSURFACE);

SDL_Window* window = NULL;
SDL_Surface* screenSurface = NULL;

window = SDL_CreateWindow("Sphere Rendering", 
    SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 
    SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);

if (window == NULL) {
    fprintf(stderr, "Window could not be created: %s\n", SDL_GetError());
    return 1;
}

screenSurface = SDL_GetWindowSurface(window);

if (!screenSurface) {
    fprintf(stderr, "Screen surface could not be created: %s\n", SDL_GetError());
    SDL_Quit();
    return 1;
}

// SDL_WM_SetCaption("Sphere Rendering", NULL);

4

请再次查看教程页面。您的代码与其不匹配(例如,SDL_SetVideoMode()已不存在)。您的代码使用的是SDL 1.2版本,而(更新后的)教程使用的是SDL 2.0版本。您是否使用了旧的缓存版本?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接