0

このプログラムを実行しましたが、コンソールに出力が表示されず、すぐに終了します。私は何が間違っているのですか?

コード:

#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

mainメソッドの署名は正しいようです。これは次のようになります 。SDLが含まれている場合、単純なtcpエコープログラムが機能しませんか?

または、ここでは、リンカーサブシステムはコンソールである必要があると述べられています:http: //www.gamedev.net/topic/376205-defeating-sdl-linker-errors-in-visual-studio-net/

だから私は合格してみました

-Wl,--subsystem,console -mconsoleコンパイラとリンカの両方に。これはビルドして起動し、以前と同じで、出力もウィンドウもありません。

私にとっては、オプションコンソールを渡すのは意味がありません。なぜなら、私は実際にウィンドウを見たいのですが、私はこれに完全に精通しているので、わかりません。SDLにはコンソールオプションでプログラムを実行するか、mainメソッドをに変更する必要があると言っている人を読んでくださいWinMain。しかし、彼らはまた、これは意味がなく、SDLはで実行されることになっていると言いますmain

また、リンカーとコンパイラに「コンソール」ではなく「ウィンドウ」を渡すテストも行いましたが、成功しませんでした(同じように動作します)。

また、コンソールに出力が表示されない理由もわかりません。すべてのSDLのもの(特にインクルード)を削除すると、出力が表示されます。また、非常に高速に実行されるため、メインメソッドはおそらくまったく実行されていません。

何か助けは...?

4

1 に答える 1

1

SDL は標準出力をファイル (stdout.txt、IIRC) にリダイレクトします。プログラムを実行するディレクトリにあるはずです。

の戻り値を確認してくださいSDL_SetVideoMode()。非 NULL である必要があります。640x480 などの解像度は、システムでサポートされていない可能性があります。

于 2012-08-18T19:35:16.360 に答える