c++ - 在 CodeBlocks 中编译 SDL2 的问题
问题描述
我正在尝试编译简单的代码:
#include <iostream>
#include <SDL2/SDL.h>
int main(int argc, char *argv[])
{
}
但它给了我很多血腥的错误:
||=== Build: Debug in aa (compiler: GNU GCC Compiler) ===|
E:\SDL2\SDL2-2.0.12\i686-w64-mingw32\lib\libSDL2main.a(SDL_windows_main.o)||In function `main_getcmdline':|
\Users\valve\release\SDL\SDL2-2.0.12-source\foo-x86\..\src\main\windows\SDL_windows_main.c|55|undefined reference to `SDL_calloc'|
\Users\valve\release\SDL\SDL2-2.0.12-source\foo-x86\..\src\main\windows\SDL_windows_main.c|60|undefined reference to `SDL_wcslen'|
\Users\valve\release\SDL\SDL2-2.0.12-source\foo-x86\..\src\main\windows\SDL_windows_main.c|60|undefined reference to `SDL_iconv_string'|
E:\SDL2\SDL2-2.0.12\i686-w64-mingw32\lib\libSDL2main.a(SDL_windows_main.o)||In function `OutOfMemory':|
\Users\valve\release\SDL\SDL2-2.0.12-source\foo-x86\..\src\main\windows\SDL_windows_main.c|28|undefined reference to `SDL_ShowSimpleMessageBox'|
E:\SDL2\SDL2-2.0.12\i686-w64-mingw32\lib\libSDL2main.a(SDL_windows_main.o)||In function `main_getcmdline':|
\Users\valve\release\SDL\SDL2-2.0.12-source\foo-x86\..\src\main\windows\SDL_windows_main.c|68|undefined reference to `SDL_SetMainReady'|
\Users\valve\release\SDL\SDL2-2.0.12-source\foo-x86\..\src\main\windows\SDL_windows_main.c|75|undefined reference to `SDL_free'|
\Users\valve\release\SDL\SDL2-2.0.12-source\foo-x86\..\src\main\windows\SDL_windows_main.c|77|undefined reference to `SDL_free'|
||error: ld returned 1 exit status|
||=== Build failed: 8 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
我不明白为什么当库本身似乎正在工作时它会给我取消定义随机函数,但是唉。
我现在所做的事情是
- 将 -lmingw32 -lSDL2 -lSDL2main 添加到链接器设置-> 其他链接器选项
- 将 32 位版本的包含文件夹添加到搜索目录-> 编译器
- 将 32 位版本的 lib 文件夹添加到搜索目录-> 链接器
- 将 SDL2.dll 添加到我的编译器的 bin 文件夹中(我将 mingw 与代码块分开)
解决方案
您的链接器和编译器标志可能是错误的。要获得正确的编译器标志,请使用:
pkg-config --cflags sdl2
要获取所需的链接标志:
pkg-config --libs sdl2
如果你没有 pkg-config,那么你可以使用sdl2-config
SDL 自带的工具:
sdl2-config --cflags
和:
sdl2-config --libs
通常,您会将这些命令添加到构建系统中。我不知道 CodeBlocks 是如何工作的,以及它是否可以做到这一点。也许您可以将这些命令添加为“标志”,但使用反引号,如下所述:
推荐阅读
- cookies - 通过 nuxt js 设置 cookie 时花括号转换为字符转义码
- c++ - 将数据结构作为类函数传递
- clojure - ring-swagger 中查询参数说明
- ruby-on-rails - Rails 解析请求,因此我将所有查询参数作为一个参数
- python - 在 python 中拟合剂量反应模型(R drc 库等效)
- kubernetes - how to forward request to public service like cdn using istio virtualservice?
- react-native - 我应该如何在 react-native 中使用 backBehaviour react-drawer-navigator 配置?
- javascript - 修改状态后组件未正确重新渲染
- java - 使用 Jackson 从 ObjectNode 获取嵌套的 JSON 元素
- python - 无法清除 python3.X 中的 pexpect 缓冲区