安装SDL遇到的问题

本文详细介绍了在使用SDL库进行跨平台游戏开发时遇到的SDL_x11sym.h文件中XData32类型与X11头文件中的XData32类型冲突的问题,并提供了通过修改SDL_x11sym.h文件解决该问题的具体步骤。通过调整宏定义,确保了SDL与X11库之间的兼容性,使得开发过程得以顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、make时出现 fatal error: X11/extensions/XShm.h: No such file or directory

解决办法:搜到的解决办法是

sudo apt-get install x11proto-xext-dev

sudo apt-get install libxext-dev

========================================================================

2、之后make又出现以下问题:

./src/video/x11/SDL_x11sym.h:168:17: error: conflicting types for _XData32?
 SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
                 ^
./src/video/x11/SDL_x11dyn.c:95:5: note: in definition of macro 釹DL_X11_SYM?
  rc fn params { ret p##fn args ; }
     ^
In file included from ./src/video/x11/SDL_x11dyn.h:34:0,
                 from ./src/video/x11/SDL_x11dyn.c:26:
/usr/include/X11/Xlibint.h:568:12: note: previous declaration of 鈅XData32?was here
 extern int _XData32(
            ^
make: *** [build/SDL_x11dyn.lo] Error 1


解决方案:查阅了一些资料,发现是libx11-dev版本问题(查看版本如图),版本>1.5.99,所以需要修改src/video/x11/SDL_x11sym.h 文件,按照提示修改168行,


修改如下:

原来是:SDL_X11_SYM(int,_XData32,(Display *dpy,register  long *data,unsigned len),(dpy,data,len),return)

改后添加一个单词即可:(_Xconst)

SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)


再make 和 sudo make install就可以了。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值