2017-09-07 1 views
0

SDL 튜토리얼을 따르고 SDL을 사용하는 C++ 파일을 컴파일하려고합니다. 나는 창 10에 있고, 원래 MinGW를 사용하고 있었다.mingw-w64 및 SDL2 연결 문제가 발생했습니다.

필자는 MinGW 설치시 SDL과 관련없는 문제가 있음을 깨달았으므로 대신 MinGW-w64로 전환하여 비 SDL 문제를 해결했지만 SDL로 컴파일하려고하면 lSDL2 또는 lSDL2main을 찾지 못했습니다. 그러나 다양한 파일에 대해 호환되지 않는다고 말하면 건너 뜁니다.

32 비트/64 비트 비 호환성이 의심 스럽지만 32 비트 g ++ 컴파일러를 사용하도록 명시 적으로 지정했지만 문제가 지속될 경우에도 이러한 상황이 어떻게되는지 잘 모르겠습니다. 참고로, 내가 명령 프롬프트에 투입 명령이

x86_64-w64-mingw32-g++ 04_key_presses.cpp     
-IC:\mingw_dev_lib\include\SDL2 -LC:\mingw_dev_lib\lib -w      
-Wl,subsystem,windows -lmingw32 -lSDL2main -lSDL2 -o key_presses 

을하고 오류 메시지가

C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\mingw_dev_lib\lib/libSDL2main.a when searching for -lSDL2main 
C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\mingw_dev_lib\lib\libSDL2main.a when searching for -lSDL2main 
C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\mingw_dev_lib\lib/libSDL2main.a when searching for -lSDL2main 
C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL2main 
C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\mingw_dev_lib\lib/libSDL2.dll.a when searching for -lSDL2 
C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\mingw_dev_lib\lib/libSDL2.a when searching for -lSDL2 
C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\mingw_dev_lib\lib\libSDL2.a when searching for -lSDL2 
C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\mingw_dev_lib\lib/libSDL2.dll.a when searching for -lSDL2 
C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\mingw_dev_lib\lib/libSDL2.a when searching for -lSDL2 
C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL2 
collect2.exe: error: ld returned 1 exit status 
+0

Visual Studio를 사용하지 않는 Windows 용 컴파일은 통증입니다. cmake를 사용하여 모든 플랫폼에 대한 빌드 시스템을 생성 한 다음 Windows에서 VS를 사용하는 것이 좋습니다. – xaxxon

답변

1

귀하의 컴파일러는 x86_64-w64-mingw32-g++입니다 있습니다. 그것은 64 비트 컴파일러입니다. 32 비트 컴파일러는 i686-w64-mingw32-g++.exe입니다. 당신이 시도하는 64 비트 연결 :

x86_64-w64-mingw32-g++ 04_key_presses.cpp \     
-IC:\mingw_dev_lib\include\SDL2 -LC:\mingw_dev_lib\lib -w \     
-Wl,subsystem,windows -lmingw32 -lSDL2main -lSDL2 -o key_presses 

는 호환되지 않는 32 비트 SDL2 라이브러리를 건너 뜁니다.

64 비트 컴파일러는 기본적으로 64 비트 또는 32 비트 대상을 구축 할 수 있으며 을 기본적으로 구축합니다. 32 비트를 대상으로하려면 컴파일과 연결에 모두 -m32을 전달하십시오. 하나의 명령으로 모두 수행 할 때 한 번만 전달하면됩니다.

x86_64-w64-mingw32-g++ 04_key_presses.cpp -m32 \     
-IC:\mingw_dev_lib\include\SDL2 -LC:\mingw_dev_lib\lib -w \     
-Wl,subsystem,windows -lmingw32 -lSDL2main -lSDL2 -o key_presses 
+0

-m32를 추가하면 호환되지 않는 것들을 건너 뛰고 찾아 내지 못한다는 더 많은 오류 메시지가 나오지만 더 이상 SDL이 아닙니다. https://pastebin.com/FYzNHsPj –

+0

@JonG 그렇습니다. 32 비트와 64 비트 라이브러리의 조합을 연결하려고합니다. 작동하지 않습니다. 지금 누락 된 것들은 툴 체인을위한 32 비트 라이브러리라고 생각합니다. 64 비트 시스템에서는 32 비트를 대상으로해야 할 필요가 없다면 64 비트 SDL2 라이브러리를 구해서 사용하는 것이 좋습니다. –

+0

@JonG 방금 귀하의 링크를 확인했습니다. 예, 툴 체인을위한 32 비트 라이브러리가 없습니다. 그들은 기본적으로 연결에 있습니다. –

관련 문제