2016-09-15 13 views
0

이렇게 비슷한 주제가 많이 있지만 비슷한 15 가지 스레드에 대한 모든 제안을 다 써 버렸습니다.Code :: Blocks를 사용하는 SDL 함수에 대한 정의되지 않은 참조

SDL 라이브러리를 사용하는 자습서 코드를 실행하면 IDE가 SDL과 관련된 모든 기능에 대해 "정의되지 않은 참조"를 제공합니다.

상황

아키텍처 : 64 비트

IDE : CodeBlocks 16.01

컴파일러 : GNU GCC

내가

1) 내가 할 시도 무엇

컴파일러에게 디렉토리 아래에서 헤더를 찾도록했다. : ..... \는 i686-W64-mingw32 \는 \ SDL2 내가 \ 포함 선택하지 않은 NOR 내가 선택 않았다 상대 경로

를 사용하여 포함 ..... \의 x86_64의-W64-mingw32의 \는 SDL2

\ 포함

내가 .... \ lib 디렉토리를 선택하지 않은 사용하여 상대 경로 lib에는 ..... \는 i686-W64-mingw32 \ NOR 내가 선택했던 :

2) 나는 디렉토리에 라이브러리 파일을 찾을 컴파일러에게 ..... \ x86_64-w64-mingw32 \ lib

3) 라이브러리를 연결할 때 디렉토리 .... \ i686-w64-mingw32 아래에 네 개의 라이브러리가 포함되었습니다. \ lib이고 위에서 언급 한 다른 디렉토리는 아닙니다. 다음

4) 라이브러리가 링크 된 순서는 :

SDL2main.lib

SDL2.lib

SDL2test.lib

5) I의 특성 것이 보장 main.c의 컴파일 파일 검사, 링크 파일 검사, 대상 디버그 및 릴리스에 속한 검사가 모두 수행되었습니다.

빌드 로그 :

-------------- 빌드 : 뱀 게임의 디버그 (컴파일러 : GNU GCC 컴파일러) -------- -------

mingw32-g ++. exe -L ...... \ Downloads \ SDL2-devel-2.0.4-mingw \ SDL2-2.0.4 \ i686-w64-mingw32 \ lib -o "bin \ Debug \ Snake Game.exe"obj \ Debug \ main.o -lmingw32 ...... \ Downloads \ SDL2-devel-2.0.4-mingw \ SDL2-2.0.4 \ i686- w64-mingw32 \ lib \ libSDL2main.a ...... \ Downloads \ SDL2-devel-2.0.4-mingw \ SDL2-2.0.4 \ i686-w64-mingw32 \ lib \ libSDL2.a OBJ \ 디버그 \의 main.o를 : 기능 SDL_main': C:/XXX/XXX/XXX/XXX/XXX/main.c:9: undefined reference to SDL_WM_SetCaption '

로그가 정의되지 않은 참조하여 계속적으로 진행합니다.

누구나이 링크 문제를 해결할 수 있습니까?

+0

어떤 컴파일러입니까? MinGW? – HolyBlackCat

+0

code :: blocks : 명령 및 출력에서 ​​제공하는 전체 링크 추적을 포함하십시오. –

+0

@HolyBlackCat GNU GCC –

답변

2

SDL2에는 SDL_WM_SetCaption이 없습니다. 귀하의 코드는 오래된 SDL 1.2를 사용하고있을 가능성이 큽니다. 올바른 라이브러리를 사용하거나 다음 코드를 수정하십시오. https://wiki.libsdl.org/MigrationGuide

+0

다음과 같이 변경했습니다. 언급 한대로 SDL2 코드로 복사했습니다. –

+0

이제 "SDL.h : No such file or directory"오류가 발생하여 컴파일러 검색 문제가되었습니다. 나는 전화 번호부를 동일에게 남겨 두었다. 상대방과 비 상대방으로 디렉토리를 포함 시켰습니다. #include "SDL.h"로 # 을 변경하려고했습니다. 행운을 빌어 요. –

+0

나는 추측을하지 않을 것이다. 소스가없고 컴파일 라인이 없다. 어쩌면 문제가있는 최소한의 프로그램 소스 코드를 추가해야 할 것입니다. 또는 SDL2 예제를 사용하여 시작하십시오. 테스트 프로그램에서'SDL_WM_SetCaption'을 사용한다면 - 분명히 SDL2를위한 것이 아니므로, 당신의 튜토리얼을 따르지 않아도됩니다. (또는 SDL1로 바꾸는 것은 권장하지 않습니다.) 매우 다른 종류의 [연결 오류]를 치게 될 가능성이 매우 높습니다 (http://stackoverflow.com/questions/39110217/linker-errors-from-sdl2-in-my-project). 초보자를위한 동적 라이브러리를 사용하는 것이 훨씬 더 간단합니다. – keltar