我试图用SDL2编译SDL_mixer 2,从中 check out 了最新代码:
http://hg.libsdl.org/SDL_mixer
也可以毫无问题地编译SDL2和SDL_image。
编译SDL_mixer时收到编译错误:
1>Compiling...
1>dynamic_mp3.c
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing ')' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2371: 'SDL_Rect' : redefinition; different basic types
1> d:\cpp\2d\love\lov8\lib\sdl\include\sdl_rect.h(69) : see declaration of 'SDL_Rect'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2371: 'SMPEG_FilterInfo' : redefinition; different basic types
1> d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(33) : see declaration of 'SMPEG_FilterInfo'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2059: syntax error : 'type'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2059: syntax error : ')'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(46) : error C2061: syntax error : identifier 'SMPEG_FilterCallback'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(48) : error C2059: syntax error : '}'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(56) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(59) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(62) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2143: syntax error : missing ')' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2081: 'SMPEG_Filter' : name in formal parameter list illegal
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2059: syntax error : ')'
1>mixer.c
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing ')' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2371: 'SDL_Rect' : redefinition; different basic types
1> d:\cpp\2d\love\lov8\lib\sdl\include\sdl_rect.h(69) : see declaration of 'SDL_Rect'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2371: 'SMPEG_FilterInfo' : redefinition; different basic types
1> d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(33) : see declaration of 'SMPEG_FilterInfo'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2059: syntax error : 'type'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2059: syntax error : ')'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(46) : error C2061: syntax error : identifier 'SMPEG_FilterCallback'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(48) : error C2059: syntax error : '}'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(56) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(59) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(62) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2143: syntax error : missing ')' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2081: 'SMPEG_Filter' : name in formal parameter list illegal
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2059: syntax error : ')'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\mixer.c(129) : warning C4090: 'function' : different 'const' qualifiers
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\mixer.c(1145) : warning C4090: 'function' : different 'const' qualifiers
1>music.c
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing ')' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2371: 'SDL_Rect' : redefinition; different basic types
1> d:\cpp\2d\love\lov8\lib\sdl\include\sdl_rect.h(69) : see declaration of 'SDL_Rect'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2371: 'SMPEG_FilterInfo' : redefinition; different basic types
1> d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(33) : see declaration of 'SMPEG_FilterInfo'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2059: syntax error : 'type'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(39) : error C2059: syntax error : ')'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(46) : error C2061: syntax error : identifier 'SMPEG_FilterCallback'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(48) : error C2059: syntax error : '}'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(56) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(59) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\mpegfilter.h(62) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2143: syntax error : missing ')' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2081: 'SMPEG_Filter' : name in formal parameter list illegal
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2143: syntax error : missing '{' before '*'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\visualc\external\include\smpeg.h(180) : error C2059: syntax error : ')'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\music.c(166) : warning C4090: 'function' : different 'const' qualifiers
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\music.c(625) : warning C4047: 'return' : 'Mix_Music *' differs in levels of indirection from 'int'
1>d:\cpp\2d\sdl2.0\sdl-2.0\sdl_mixer\music.c(1529) : warning C4090: 'function' : different 'const' qualifiers
最佳答案
我认为您可以删除MP3_MUSIC预处理程序宏,或者在搜索路径中包含smpeg。
关于c++ - 使用Visual Studio Express和SDL2在Windows中破坏了SDL_mixer 2编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10229508/