首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最新SDL 2.0版本中的未定义引用

最新SDL 2.0版本中的未定义引用
EN

Stack Overflow用户
提问于 2013-06-02 00:03:22
回答 1查看 1.3K关注 0票数 0

我使用旧版本的SDL2已经有一段时间了,从来没有遇到过任何问题;但现在看起来连接不正确了,我也不知道为什么。

下面是整个程序:

代码语言:javascript
复制
#include <stdlib.h>
#include <stdio.h>
#include <SDL2/SDL.h>

int main(int argc, char *argv[]) {
    SDL_Init(SDL_INIT_EVERYTHING);
    SDL_Window *win = nullptr;
    SDL_CreateWindow("test", 100, 100, 100, 100, SDL_WINDOW_SHOWN);
    return 0;
}

我使用的是codeblocks+mingw32,下面是我想象的构建日志的相关部分:

代码语言:javascript
复制
mingw32-g++.exe -LE:\...\SDL2-2.0.0\x86_64-w64-mingw32\lib -LE:\Programs\Code-Blocks\lib  -o bin\Debug\SDL2test.exe obj\Debug\main.o -pg -lgmon  -lmingw32 -lSDL2main -lSDL2 -lSDL2.dll -lgdi32 -lwinmm -luser32

下面是错误:

代码语言:javascript
复制
undefined reference to `SDL_Init'
undefined reference to `SDL_CreateWindow'
undefined reference to `WinMain@16'

为了便于比较,下面是一个程序的构建日志,该程序使用几个月前的SDL2构建编译得很好:

代码语言:javascript
复制
mingw32-g++.exe -LE:\...\SDL2\lib -LE:\Programs\Code-Blocks\lib  -o bin\Debug\SDL2.exe obj\Debug\main.o -lSDL2_image -lSDL2_ttf -pg -lgmon  -lmingw32 -lSDL2main -lSDL2.dll -lSDL2 -lgdi32 -lwinmm -luser32 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-07 02:27:07

您的链接器选项看起来不错。

确保您的代码块位于正确的目录中。

i686-w64-mingw32用于32位编译。

x86_64-w64-mingw32用于64位编译。

我遇到了和你一样的问题,我花了很长时间才发现我最初的假设是错误的。

使用以下目录进行32位编译:

搜索目录:

编译器

代码语言:javascript
复制
C:\Users\USERNAME\Programs\SDL\SDL2-2.0.3\i686-w64-mingw32\include\

C:\Users\USERNAME\Programs\SDL\SDL2_ttf-2.0.12\i686-w64-mingw32\include\

C:\Users\USERNAME\Programs\SDL\SDL2_image-2.0.0\i686-w64-mingw32\include\

链接器

代码语言:javascript
复制
C:\Users\USERNAME\Programs\SDL\SDL2-2.0.3\i686-w64-mingw32\lib

C:\Users\USERNAME\Programs\SDL\SDL2_ttf-2.0.12\i686-w64-mingw32\lib

C:\Users\USERNAME\Programs\SDL\SDL2_image-2.0.0\i686-w64-mingw32\lib

我希望这能帮到你!

詹森

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16874589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档