Windows 7, Code :: Blocks 및 MinGW를 사용하고 있습니다. 나는 Code/Blocks가 makefile을 사용하지 않을 때 특히 컴파일/빌드에 관한 경험이 거의 없다.SDL2 라이브러리의 정적 연결
http://www.libsdl.org/tmp/download-2.0.php에서 SDL2-devel-2.0.0-mingw.tar.gz (SDL 개발 라이브러리)를 다운로드했으며 SDL2 라이브러리를 사용하여 독립 실행 형 실행 파일을 만들고 싶습니다. 그러나 지금까지 항상 SDL2.dll 파일을 실행 파일로 묶어서 작동하게하십시오.
동적 라이브러리를 정적 링크 할 수 없다는 소식을 들었으므로 링크에서 SDL2-2.0.0.tar.gz 파일 (소스 코드)을 사용하여 소스 파일로 뭔가를하고있는 것 같습니다. 나는 위에서 언급했다. 그러나, 나는 그들과 함께해야 할 일을 모른다.
Visual Studio 프로젝트를 Code :: Blocks로 가져와 빌드하는 것이 소스 파일과 함께 시도했지만 "sdl-config에는 해당 파일이나 디렉터리가 없습니다"라고 표시됩니다.). 또한 빌딩이 단순히 실행 파일을 제공하는지 여부를 확신 할 수 없습니다.이 실행 파일을 사용하면 내 실행 파일과 링크 할 수 있습니다.
바보 같은 바보의 단계 가이드가이 문제를 해결하기위한 최선의 방법 일 것입니다.
편집 :
나는 조나스가 제공하는 가이드와 함께 SDL 라이브러리를 컴파일 관리 및 libSDL2.a 파일을 얻었다.
처음에는 "Link libraries :"섹션에 Code :: Blocks 섹션을 추가했지만 "SDL_Init()"와 같은 오류가 발생했습니다.
libSDL2.a 경로 외에도 SDL2-2.0.0 \ include의 경로를 컴파일러의 검색 디렉토리에 추가하고 SDL2-2.0.0 \ build.libs의 경로를 링커의 검색에 추가했습니다 예배 규칙서. 나는 또한 이것을 테스트 파일에 작성했다 : #include "SDL.h".
선언 문제를 해결했지만 지금은 코드 :: 블록도 이상의 오류 SDL_mmjoystick.c 파일을 열어 준 나타납니다#include "SDL.h"
int main(int argc, char* args[]) {
//Start SDL
SDL_Init(SDL_INIT_EVERYTHING);
//Quit SDL
SDL_Quit();
return 0;
}
: " '정의되지 않은 참조를 waveInClose @ 내 테스트 파일은 이제 다음과 같습니다 4 ' ","waveOutClose @ 4 "에 대한 정의되지 않은 참조,"joyGetNumDevs @ 0 "및 기타 다수에 대한 정의되지 않은 참조 http://gyazo.com/00656a9c1e57a2bd0db1414fa7d68ced.png
내가 제대로 사용에이 라이브러리를 가지고하는 방법을 잘 모르겠습니다 :
여기에 그런 일이 왜 확실하지 않다 #include와 텍스트의 다른 색상을 참고, 무슨 일이 일어나고 있는지의 스크린 샷입니다. 이 경우 도움이 필요합니까? 아니면 다른 질문을해야합니까?
편집 :
나는 링커 옵션에 -lSDL2을 추가하고 다른 매개 변수를 삭제.mingw32-g++.exe -Wall -fexceptions -g -IC:\Users\User\Desktop\SDL2-2.0.0\include -c "C:\Users\User\Desktop\CppProjects\SDL project\main.cpp" -o obj\Debug\main.o
mingw32-g++.exe -Wall -fexceptions -g -IC:\Users\User\Desktop\SDL2-2.0.0\include -c "C:\Users\User\Desktop\CppProjects\SDL project\thetestfile.cpp" -o obj\Debug\thetestfile.o
mingw32-g++.exe -LC:\Users\User\Desktop\SDL2-2.0.0\build\.libs -o "bin\Debug\SDL project.exe" obj\Debug\main.o obj\Debug\thetestfile.o -lSDL2 ..\..\SDL2-2.0.0\build\.libs\libSDL2.a C:\Users\User\Desktop\SDL2-2.0.0\build\.libs\libSDL2.a -mwindows
Output size is 945.80 KB
Process terminated with status 0 (0 minutes, 1 seconds)
0 errors, 0 warnings (0 minutes, 1 seconds)
을하지만 그것을 실행하려고하면, 그것은 요점은 정적 링크에있는 동안 내 컴퓨터가 SDL2.dll 부족 말한다 : 지금은 잘 구축합니다.
그래서 현재/lib 디렉토리를 내 링크 라이브러리 -settings, -lSDL2를 다른 링커 옵션으로 빌드하고 검색 디렉토리에 대해 SDL2-2.0.0에 대한 경로/컴파일러를 포함하고 있습니다. 링커에 대한 SDL2-2.0.0/build/.libs.
build/.libs 디렉토리에서 libSDL2.a, libSDL2.dll.a, libSDL2를 볼 수도 있습니다.la와 libSDL2.lai 파일은 어떤 파일인지 알 수 없습니다.
libsdl2.a를 명시 적으로 링커에 전달하는 경우'-lSDL2'를 삭제할 수 있습니다. – greatwolf