최근에 나는 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를 다운로드 다운로드 SDL2.0.3에 컴파일러 오류를 제공하지만 https://hg.libsdl.org/SDL/raw-file/e217ed463f25/include/SDL_platform.h
에서 다운로드 SDL2.0.0되지 하나 개 남았습니다 .H 파일에 대한 수정 프로그램을 적용한SDL2.0.3의 컴파일러 옵션에 lib 및 include 폴더를 추가했습니다.
내가 링커 문자열을 추가했습니다 : -lmingw32 -lSDL2main -lSDL2를 (또한 -lmingw32 -lSDL2 -lSDL2main 시도와 같은 다른 10 가지 포럼에 있음).
Debug 및 Release 컴파일러를 모두 사용해 보았습니다.
GUI 응용 프로그램과 콘솔 응용 프로그램으로 프로그램을 빌드 해 보았습니다. SDL1에서는 GUI 애플리케이션으로 컴파일되었습니다. SDL2에서이 은 간단히 컴파일되지만 실행하면 절대적으로 아무것도하지 않습니다. 콘솔 응용 프로그램으로 을 실행하면, 콘솔 창, 응답하지 프로그램을 팝업하고 콘솔 프로세스 내가 정확하게 모든 지시를 따랐습니다 255
반환 값 6.357 초 후에 종료 표시 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를 제거하고 Dev C++를 Windows 7 호환 모드로 다시 설치했습니다 (즉, Program Files x86이 아님). 그런 다음, 모든 것을 다시 설정하고 작동 시켰습니다.
Windows 8.1 관리자 BS shenanigans, 호환성 모드 또는 이전에 손상된 파일이나 내가 사용하고있는 SDL 또는 파일에 공간이있는 x86 파일을 설치하기 위해 설치되었다는 사실에 문제가있을 수 있습니다. 경로 및 제한된 권한이 있어야합니다.
문제 : 창 때문입니다.
프로그램의 출력을 게시하는 것을 잊어 버렸습니다 ... SDL_CreateWindow 후에 오류를 확인하지 않습니까? –
내 프로그램의 출력을 게시하려면 어떻게해야합니까? 컴파일하고 실행 한 후에는 말 그대로 아무 일도 일어나지 않거나 콘솔 프로그램으로 설정하면 콘솔 상자가 열리고 응답을 멈 춥니 다. 나는이 일과 Windows 8과의 끔찍한 연관성이 있음을 느낀다. – Giovanni
@ 지오바니 (Giovanni) 답변으로 추가하고 동의하십시오. 다른 사용자가 동일한 오류를 발견하면 솔루션을 빨리 찾을 수 있습니다. – Emz