繁体   English   中英

程序未使用SDL执行

[英]Program not executed with SDL

我运行该程序,在控制台中看不到任何输出,并且该程序立即终止。 我究竟做错了什么?

编码:

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

using namespace std;

int main(int argc, char *argv[]) {
  //The images

cout << "Hello World" << endl;

    SDL_Surface* hello = NULL;
    SDL_Surface* screen = NULL;

    //Start SDL
    SDL_Init( SDL_INIT_EVERYTHING );

    //Set up screen
    screen = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE );

    //Load image
    hello = SDL_LoadBMP( "heldlo.bmp" );

    //Apply image to screen
    SDL_BlitSurface( hello, NULL, screen, NULL );

    //Update Screen
    SDL_Flip( screen );

    //Pause
    SDL_Delay( 20000 );

    //Free the loaded image
    SDL_FreeSurface( hello );

    //Quit SDL
    SDL_Quit();

    return 0;
}

使用minGW,传递库:

mingw32 SDLmain SDL

主要方法的签名似乎是正确的,就像这里: 当包含SDL时,简单的tcp echo程序不起作用?

或在这里说明链接器子系统必须是控制台: http : //www.gamedev.net/topic/376205-defeating-sdl-linker-errors-in-visual-studio-net/

所以我尝试通过

-Wl,--subsystem,console -mconsole对编译器和链接器都-Wl,--subsystem,console -mconsole 这将生成并开始,并且与以前相同,没有输出,没有窗口。

对我来说,传递选项控制台是没有意义的,因为我实际上想看到一个窗口,但是我是一个完整的菜鸟,所以我不知道。 只是读到有人说SDL需要使用控制台选项运行程序,或者将main方法更改为WinMain 但是随后他们还说这没有意义,SDL应该与main一起运行。

我还进行了一个测试,将“ windows”而不是“ console”传递给链接器和编译器,也没有成功(其行为相同)。

我也不明白为什么我在控制台中看不到输出。 如果删除所有SDL内容(特别是include),它将显示输出。 由于它也执行得非常快,所以主要方法可能根本没有执行。

任何帮助...?

SDL将标准输出重定向到文件(stdout.txt,IIRC)。 您应该在运行程序的目录中找到它。

检查SDL_SetVideoMode()的返回值,该值必须为非NULL。 系统可能不支持640x480之类的分辨率。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM