【问题标题】:Undefined reference to SDL functions using Code::Blocks使用 Code::Blocks 对 SDL 函数的未定义引用
【发布时间】:2017-01-24 01:30:06
【问题描述】:

关于这个,关于 SO 有很多类似的主题,但我已经用尽了关于 15 个类似主题的所有建议。

在使用 SDL 库运行教程代码时,IDE 抱怨对与 SDL 相关的所有函数的“未定义引用”。

情况

架构:64 位

IDE:代码块 16.01

编译器:GNU GCC

我尝试过的事情

1) 我告诉编译器在目录下查找头文件: .....\i686-w64-mingw32\include\SDL2 使用相对路径

我没有选择 \include 也没有选择.....\x86_64-w64-mingw32\include\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 的属性是这样的:编译文件被检查,链接文件被检查,并且目标中的属于 debug 和 release 都被检查。

构建日志:

-------------- Build: Debug in Snake Game (编译器: GNU GCC Compiler)---------------

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\Debug\main.o:在函数SDL_main': C:/XXX/XXX/XXX/XXX/XXX/main.c:9: undefined reference toSDL_WM_SetCaption'

日志继续使用未定义的引用。

谁能指导我解决这个链接问题?

【问题讨论】:

  • 什么编译器? MinGW?
  • 请包含 code::blocks: 命令和输出提供的完整链接跟踪。
  • @HolyBlackCat GNU GCC
  • 那是什么操作系统?窗户?
  • @HolyBlackCat 是的

标签: c sdl codeblocks static-linking


【解决方案1】:

SDL2 中没有SDL_WM_SetCaption。您的代码可能使用的是较旧的 SDL 1.2。使用正确的库或修改您的代码,例如遵循https://wiki.libsdl.org/MigrationGuide

【讨论】:

  • 我做了以下更改:我复制了你提到的 SDL2 代码。
  • 我现在收到一个错误“SDL.h:没有这样的文件或目录”,它现在已成为编译器搜索问题。我已经留下了相同的目录。我将目录包括为相对和非相对。我试图将#include 更改为#include "SDL.h"。没有运气
  • 我不会去猜测,不是没有源代码和编译行。也许您应该在问题中添加您遇到错误的最小程序的源代码。或者只是从任何 SDL2 示例开始。如果您的测试程序使用SDL_WM_SetCaption - 显然它不适用于 SDL2,您不应该遵循您的教程(或切换到 SDL1,我不推荐)。你很可能会遇到一种非常不同的linking errors;对于初学者来说使用动态库会简单得多。
  • 我从头开始:我唯一的源代码是:
  • #include #include //屏幕尺寸常数 const int SCREEN_WIDTH = 640;常量 int SCREEN_HEIGHT = 480; int main(int argc, char* args[]) { }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 2011-10-24
  • 2016-08-12
  • 2018-06-12
  • 1970-01-01
  • 2013-06-07
相关资源
最近更新 更多