到目前爲止,我對SDL2非常沮喪。這裏沒有選擇,所以從一些知識淵博的人的幫助中尋找。我試圖讓這個補丁在Windows 8.1上工作。 我在使用Windows 7上的第一個SDL時遇到了任何問題,並且輕而易舉。但是,SDL2並非如此。程序運行時沒有任何反應(也沒有創建窗口)
我使用最近更新的代碼塊+ minGW32發行版來關注「http://lazyfoo.net/tutorials/SDL/01_hello_SDL/windows/codeblocks/index.php」的教程。我也在Orwell Dev C++ + minGW32上試過它。然而,非常奇怪的事情正在發生,這是我在編程中從未見過的東西。我的編譯器不給我任何錯誤。但是,當程序運行時,什麼都不會發生。應該創建一個窗口並延遲幾秒鐘。我也嘗試了第2部分教程來展示圖片,並且再次沒有任何反應。
我確定這兩個程序都不被Windows防火牆阻止,並以管理員身份運行程序和.exe。
編譯器不給出錯誤。
SDL2.dll位於.exe的文件夾中。
我已經從網站上的鏈接下載SDL2.0.3和下載並應用修復爲一個靠不住的.h文件中,讓編譯器 誤差SDL2.0.3但不SDL2.0.0在 https://hg.libsdl.org/SDL/raw-file/e217ed463f25/include/SDL_platform.h
下載我在編譯器選項中爲SDL2.0.3添加了lib和include文件夾。
我已經添加了連接字符串:-lmingw32 -lSDL2main -lSDL2(也試過-lmingw32 -lSDL2 -lSDL2main和像 論壇發現了其他10件)。
我試過使用調試和發佈編譯器。
我試過將程序構建爲GUI應用程序和控制檯應用程序。在SDL1中,我編譯爲GUI應用程序。在SDL2中,這個 只是編譯,但是當運行時,它什麼都不做。當跑 作爲控制檯應用程序,一個控制檯窗口彈出, 停止響應的程序,然後控制檯顯示 6.357秒後處理退出,返回值255
我已經照着所有的指令準確同時使用Code :: Blocks和Dev C++ IDE,但我仍然沒有得到任何結果。一直在工作和搜索這個爲期2天。上帝的名字是什麼讓我產生這種壓力? 如果您有任何建議或遇到過這個悲劇,請幫忙! T.T
的代碼是非常基本的,如下所示:
//Using SDL and standard IO
#include <SDL.h>
#include <stdio.h>
//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main(int argc, char* args[])
{
//The window we'll be rendering to
SDL_Window* window = NULL;
//The surface contained by the window
SDL_Surface* screenSurface = NULL;
//Initialize SDL
if(SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
}
else
{
//Create window
window = SDL_CreateWindow("SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
if(window == NULL)
{
printf("Window could not be created! SDL_Error: %s\n", SDL_GetError());
}
else
{
//Get window surface
screenSurface = SDL_GetWindowSurface(window);
//Fill the surface white
SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF));
//Update the surface
SDL_UpdateWindowSurface(window);
//Wait two seconds
SDL_Delay(2000);
}
}
//Destroy window
SDL_DestroyWindow(window);
//Quit SDL subsystems
SDL_Quit();
return 0;
}
這是從開發的C輸出編譯器++:
Compiling Project Changes...
--------
- Project File: C:\Users\Giovanni\Desktop\test\GioGame\GioGame.dev
- Compiler Name: MinGW GCC 4.8.1 32-bit Debug
Building makefile...
--------
- Filename: C:\Users\Giovanni\Desktop\test\GioGame\Makefile.win
- Output File: C:\Users\Giovanni\Desktop\test\GioGame\GioGame.exe
Processing makefile...
--------
- Makefile Processor: C:\Program Files (x86)\Dev-Cpp\MinGW32\bin\mingw32-make.exe
- Command: mingw32-make.exe -f "C:\Users\Giovanni\Desktop\test\GioGame\Makefile.win" all
g++.exe -c 01_hello_SDL.cpp -o 01_hello_SDL.o -I"C:/Program Files (x86)/Dev-Cpp/MinGW32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW32/mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW32/lib/gcc/mingw32/4.8.1/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW32/lib/gcc/mingw32/4.8.1/include/c++" -I"C:/Users/Giovanni/Desktop/test/SDL2.0.3/include/SDL2" -g3
g++.exe 01_hello_SDL.o -o GioGame.exe -L"C:/Program Files (x86)/Dev-Cpp/MinGW32/lib" -L"C:/Program Files (x86)/Dev-Cpp/MinGW32/mingw32/lib" -L"C:/Users/Giovanni/Desktop/test/SDL2.0.3/lib" -static-libstdc++ -static-libgcc -lmingw32 -lSDL2main -lSDL2 -g3
Compilation Results...
--------
- Errors: 0
- Warnings: 0
- Output Size: 143.41796875 KiB
- Compilation Time: 2.86s
終於解決。正如我有一種感覺,這是Windows或Windows 8.1的一些問題,只是爲了好玩而讓我感到厭煩。我非常小心並重新下載了SDL2.0。3並重新應用了SDL_platform.h的修補程序。 然後,我完全卸載了我嘗試的所有IDE,以Windows 7兼容模式重新安裝Dev C++作爲桌面管理員(即不在Program Files x86中)。 然後,我再次安裝所有東西,然後運行它。
可能是Windows 8.1管理員BS shenanigans或兼容模式,或早期損壞的下載,或者我正在使用的SDL的問題,甚至是它已安裝到程序文件x86中,這些文件在文件中有一個空格路徑和有限的權利,因爲窗戶。
所以問題:因爲windows。
您忘了發佈您的程序的輸出...您也沒有檢查'SDL_CreateWindow'後的任何錯誤 – 2014-12-02 00:29:08
如何發佈我的程序輸出?編譯和運行後,幾乎沒有任何反應,或者如果設置爲控制檯程序,它只是打開一個控制檯框並停止響應。我有一種感覺,這和Windows 8有一些可怕的聯繫,我做得不對。 – Giovanni 2014-12-02 02:06:40
@Giovanni添加爲答案並接受它。如果其他人有相同的錯誤,他們可以很快找到解決方案。 – Emz 2014-12-02 08:57:57