在CodeBlocks下配置SDL2开发环境

发布于 2021-12-05 12:25:16 字数 4145 浏览 874 评论 13

    最近在学习SDL的开发,想用平时熟悉的IDE:Code::Blocks来编写SDL程序。但是我按照网上的方法试了一下,都配置不成功.然后编译不了:

    我用的是Code::Blocks 12.11.用的SDL2是官网下载的SDL2-dSDL2-devel-2.0.1-mingw.tar.gz (MinGW32/64-bit)开发包版本。

    在Code::Blocks下的配置是按照:


  1.     建立一个空的工程(Empty Project)
  2.      在构建选项下的Search directiories下的编译器路径中添加:    
         D:SDL2-2.0.1x86_64-w64-mingw32includeSDL2
  3.     在链接器路径中添加:
        D:SDL2-2.0.1x86_64-w64-mingw32lib
        上图:
        
  4. 然后在Linker Settings下添加其他编译器选项:
    -lmingw32 -lSDL2 -lSDL2main -lSDL2.dll -luser32 -lgdi32 -lwinmm -ldxguid  -mwindows
  5. 然后确定,加入一个最简单的SDL2程序:(main.cpp):
    #include <SDL.h>
    #include <stdio.h>
    
    const int SCREEN_WIDTH = 640;
    const int SCREEN_HEIGHT = 480;
    
    int main( int argc, char* args[] )
    {
    
    	SDL_Window* window = NULL;
    	SDL_Surface* screenSurface = NULL;
    	if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
    	{
    		printf( "SDL could not initialize! SDL_Error: %sn", SDL_GetError() );
    	}
    	else
    	{
    		window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
    		if( window == NULL )
    		{
    			printf( "Window could not be created! SDL_Error: %sn", SDL_GetError() );
    		}
    		else
    		{
    			screenSurface = SDL_GetWindowSurface( window );
    			SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF ) );
    			SDL_UpdateWindowSurface( window );
    			SDL_Delay( 2000 );
    		}
    	}
    	SDL_DestroyWindow( window );
    	SDL_Quit();
    	return 0;
    }

  6. 然后,编译.提示以下错误:
    -------------- Build: Debug in TestSDL2 (compiler: GNU GCC Compiler)---------------
    
    mingw32-g++.exe -Wall  -g    -ID:SDL2-2.0.1x86_64-w64-mingw32includeSDL2  -c D:CWorkTestSDL2main.cpp -o objDebugmain.o
    mingw32-g++.exe -LD:SDL2-2.0.1x86_64-w64-mingw32lib  -o binDebugTestSDL2.exe objDebugmain.o   -lmingw32 -lSDL2 -lSDL2main -lSDL2.dll -luser32 -lgdi32 -lwinmm -ldxguid  -mwindows  
    objDebugmain.o: In function `SDL_main':
    D:/CWork/TestSDL2/main.cpp:12: undefined reference to `SDL_Init'
    D:/CWork/TestSDL2/main.cpp:14: undefined reference to `SDL_GetError'
    D:/CWork/TestSDL2/main.cpp:18: undefined reference to `SDL_CreateWindow'
    D:/CWork/TestSDL2/main.cpp:21: undefined reference to `SDL_GetError'
    D:/CWork/TestSDL2/main.cpp:25: undefined reference to `SDL_GetWindowSurface'
    D:/CWork/TestSDL2/main.cpp:26: undefined reference to `SDL_MapRGB'
    D:/CWork/TestSDL2/main.cpp:26: undefined reference to `SDL_FillRect'
    D:/CWork/TestSDL2/main.cpp:27: undefined reference to `SDL_UpdateWindowSurface'
    D:/CWork/TestSDL2/main.cpp:28: undefined reference to `SDL_Delay'
    D:/CWork/TestSDL2/main.cpp:31: undefined reference to `SDL_DestroyWindow'
    D:/CWork/TestSDL2/main.cpp:32: undefined reference to `SDL_Quit'
    c:/program files/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `WinMain@16'
    collect2.exe: error: ld returned 1 exit status
    过程结束,其状态为 1 (0 分钟, 2 秒)
    12 errors, 0 warnings (0 minutes, 2 seconds)
    求大神帮我看看,我哪儿错了。网上也找不到解决的方法。配置到底出了什么问题呀。


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(13

眼眸里的那抹悲凉 2021-12-08 18:01:14

我也被这个问题折腾了很久,后来在一篇博文里找到了问题所在:“(其它链接器选项)输入“-lmingw32 -lSDL2main -lSDL2”,顺序不能错,否则报错”。

博文地址:https://blog.csdn.net/csx66406602/article/details/52847146

心欲静而疯不止 2021-12-08 18:01:12

回复
CB很久不用了,自己想想办法吧

无边思念无边月 2021-12-08 18:01:12

可不可以在CB中设置一下呀。一定要用到msys吗?

倚栏听风 2021-12-08 18:01:10

回复
pkg-config --libs 输出 lib 相关的编译参数 pkg-config --cflags 输出 include 相关的编译参数

彩扇题诗 2021-12-08 18:01:10

回复
能不能给我讲解一下这条语句的意思呀,多谢

梦里兽 2021-12-08 18:00:47

回复
谢谢啊,明天我试试

鹤舞 2021-12-08 18:00:06

把 pkg-config --libs --cflags sdl2 输出的东西加到 gcc x.c 后面

琴流音 2021-12-08 17:54:05

-lSDL2.dll 


坐在坟头思考人生 2021-12-08 17:41:02

msys bash 下 “ gcc x.c `pkg-config --libs --cflags sdl2` ” 编译无错误输出 x.c 文件是你的代码

挽清梦 2021-12-08 13:02:38

-lSDL2.dll 


草莓味的萝莉 2021-12-08 12:53:33

msys bash 下 “ gcc x.c `pkg-config --libs --cflags sdl2` ” 编译无错误输出 x.c 文件是你的代码

孤檠 2021-12-08 11:27:18

我记得CB支持pkg-config的吧,试试pkg-config,sdl2的官方devel包也自带pc文件的

反目相谮 2021-12-06 15:00:37

我已为此忙了一个下午了。好头疼呀

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文