2016-09-15 86 views
0

關於這方面,SO上有相當多的類似主題,但我已經用完了15個類似線程的所有建議。使用Code :: Blocks的未定義的SDL函數引用

在運行使用SDL庫的教程代碼時,IDE抱怨所有與SDL有關的功能都是「未定義參考」。

形勢

體系結構:64位

IDE:代碼塊16.01

編譯器:GNU GCC

我試圖做

1)I告訴編譯器在目錄下查找標題: ..... \ i686的-W64-的mingw32 \包括使用\ SDL2相對路徑

我沒有選擇\包括我也沒有選擇..... \ x86_64的-W64-的mingw32 \包括\ SDL2

2)我告訴編譯器找到目錄下的庫文件: ..... \ i686的-W64-的mingw32 \使用相對路徑的lib

我沒有選擇.... \ lib中我也沒有選擇..... \ x86_64-w64-mingw32 \ lib

3)當鏈接庫時,我在目錄 .... \ i686-w64-mingw32下包含了四個庫\ lib而不是上面提到的其他目錄。

4),在該文庫中鏈接的順序如下:

SDL2main.lib

SDL2.lib

SDL2test.lib

5)本人保證屬性的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:沒有這樣的文件或目錄」,它現在已經成爲一個編譯器搜索問題。我已經離開目錄相同。我包括目錄作爲相對和非相對。我試圖將#include 更改爲#include「SDL.h」。沒有運氣 –

+0

我不會做猜測,不是沒有源碼和編譯器。也許你應該在你的問題中添加你有錯誤的最小程序的源代碼。或者只是以任何SDL2示例開始。如果您的測試程序使用「SDL_WM_SetCaption」 - 顯然它不適用於SDL2,並且您不應該遵循您的教程(或切換到SDL1,我不建議這樣做)。很可能你會遇到一種非常不同的[鏈接錯誤](http://stackoverflow.com/questions/39110217/linker-errors-from-sdl2-in-my-project);爲初學者使用動態庫會簡單得多。 – keltar