2015-01-31 76 views
3

因此,我使用SDL2,構建爲Windows 64位上的靜態庫。 SDL2會阻止您的stdout和stderr到達控制檯。Windows上的SDL2竊取了我的標準輸出和stderr

現在,我讀了FAQ這個。 但是:

  • NO_STDIO_REDIRECT符號僅適用於SDL1.2,並未在SDL2中使用。
  • freopen()技巧不起作用,任何咒語。
  • 我將我的應用程序作爲控制檯應用程序鏈接。
  • 我不鏈接到SDL2main便利庫。

我在命令行中使用2013套件中的visual C。 這是我的鏈接invokation:

LINK.EXE /OUT:giver.exe /子系統:CONSOLE/NOLOGO C:/Users/bram/Desktop/src/opende/lib/Release/ode.lib C:/ Users/bram/Desktop/src/SDL2-2.0.3/VisualC/S DL/x64/Debug/SDL2.lib winmm.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32。 LIB SHELL32.LIB ole32.lib oleaut32.lib UUID.LIB odbc32.lib odbccp32.lib version.lib imm32.lib OpenGL32.lib sdlmain.obj gl3w.obj libpi.lib libbase.lib

然而,沒有STD輸出爲了我。 我該如何阻止SDL2竊取我的輸出?

+0

你有沒有找到一個答案? – 2015-04-10 23:13:25

+1

我放棄了命令行界面,並投降。現在我使用一個視覺工作室項目。我從來沒有發現什麼是錯的。 – Bram 2015-04-12 18:13:11

回答

0

我創建了一個簡單的SDL2程序,並使用可從libsdl.org找到的default x64 SDL2.0.3 VC .lib/.dll's,並在Win7 x64上使用VS2013進行編譯,並使用printf/SDL_Log獲取控制檯輸出。希望這有助於。

這裏的程序:

#include <SDL2/SDL.h> 
#include <stdio.h> 

int main(int argc, char** argv) 
{ 
    SDL_Init(SDL_INIT_VIDEO); 
    SDL_Window* window = SDL_CreateWindow("SDL2 Test", 
             SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 
             800, 600, SDL_WINDOW_SHOWN); 

    SDL_Surface* screenSurface = SDL_GetWindowSurface(window); 

    SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0x0c, 0xd6, 0xe8)); 
    SDL_UpdateWindowSurface(window); 

    printf("printf: Hello World\n"); 
    SDL_Log("SDL_Log: Hello World\n"); 

    SDL_Delay(2500); 

    SDL_DestroyWindow(window); 
    SDL_Quit(); 
    return 0; 
} 

以下是我編(更改包括適當/鏈接目錄):

cl hello_SDL2.cpp /MD /I C:\vs_sdl\include /link C:\vs_sdl\lib\x64\SDL2.lib C:\vs_sdl\lib\x64\SDL2main.lib /SUBSYSTEM:CONSOLE 

程序帶來了幾秒鐘的窗口,並輸出以下控制檯:

printf: Hello World 
SDL_Log: Hello World 
相關問題