SDL_mixer 2 编译在窗口中使用 Visual Studio Express 和 SDL2 中断
SDL_mixer 2 compilation broken in windows using visual studio express with SDL2
我尝试使用 SDL2 编译 SDL_mixer 2 检查了以下最新代码:
http://hg.libsdl.org/SDL_mixerSDL2 和 SDL_image 也编译没有问题。
编译时SDL_mixer IM收到编译错误:
1>Compiling...
1>dynamic_mp3.c
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing ')' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2371: 'SDL_Rect' : redefinition; different basic types
1> d:cpp2dlovelov8libsdlincludesdl_rect.h(69) : see declaration of 'SDL_Rect'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2371: 'SMPEG_FilterInfo' : redefinition; different basic types
1> d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(33) : see declaration of 'SMPEG_FilterInfo'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2059: syntax error : 'type'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2059: syntax error : ')'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(46) : error C2061: syntax error : identifier 'SMPEG_FilterCallback'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(48) : error C2059: syntax error : '}'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(56) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(59) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(62) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2143: syntax error : missing ')' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2081: 'SMPEG_Filter' : name in formal parameter list illegal
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2059: syntax error : ')'
1>mixer.c
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing ')' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2371: 'SDL_Rect' : redefinition; different basic types
1> d:cpp2dlovelov8libsdlincludesdl_rect.h(69) : see declaration of 'SDL_Rect'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2371: 'SMPEG_FilterInfo' : redefinition; different basic types
1> d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(33) : see declaration of 'SMPEG_FilterInfo'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2059: syntax error : 'type'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2059: syntax error : ')'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(46) : error C2061: syntax error : identifier 'SMPEG_FilterCallback'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(48) : error C2059: syntax error : '}'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(56) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(59) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(62) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2143: syntax error : missing ')' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2081: 'SMPEG_Filter' : name in formal parameter list illegal
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2059: syntax error : ')'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixermixer.c(129) : warning C4090: 'function' : different 'const' qualifiers
1>d:cpp2dsdl2.0sdl-2.0sdl_mixermixer.c(1145) : warning C4090: 'function' : different 'const' qualifiers
1>music.c
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing ')' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2371: 'SDL_Rect' : redefinition; different basic types
1> d:cpp2dlovelov8libsdlincludesdl_rect.h(69) : see declaration of 'SDL_Rect'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2371: 'SMPEG_FilterInfo' : redefinition; different basic types
1> d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(33) : see declaration of 'SMPEG_FilterInfo'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2143: syntax error : missing ';' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2059: syntax error : 'type'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(39) : error C2059: syntax error : ')'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(46) : error C2061: syntax error : identifier 'SMPEG_FilterCallback'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(48) : error C2059: syntax error : '}'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(56) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(59) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludempegfilter.h(62) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2143: syntax error : missing ')' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2081: 'SMPEG_Filter' : name in formal parameter list illegal
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2143: syntax error : missing '{' before '*'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixervisualcexternalincludesmpeg.h(180) : error C2059: syntax error : ')'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixermusic.c(166) : warning C4090: 'function' : different 'const' qualifiers
1>d:cpp2dsdl2.0sdl-2.0sdl_mixermusic.c(625) : warning C4047: 'return' : 'Mix_Music *' differs in levels of indirection from 'int'
1>d:cpp2dsdl2.0sdl-2.0sdl_mixermusic.c(1529) : warning C4090: 'function' : different 'const' qualifiers
有人知道吗?
我认为您可以删除MP3_MUSIC预处理器宏或在搜索路径中包含 smpeg。
查看预处理器定义。
删除这些
MOD_MUSIC
MOD_DYNAMIC="libmikmod-2.dll"
OGG_MUSIC
OGG_DYNAMIC="libvorbisfile-3.dll"
FLAC_MUSIC
FLAC_DYNAMIC="libFLAC-8.dll"
MP3_MUSIC
MP3_DYNAMIC="smpeg.dll"
如果要在音频中使用任何这些文件类型,则还需要获取这些.dll文件。我建议静态而不是动态编译这些库,以使事情更加跨平台兼容。
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 试图在visual studio上用C++创建一个桌面应用程序
- 如何在MS Visual Studio 2019中运行QT UI
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- Visual Studio Code - C++ Debugger 無法啟動
- Visual Studio 2019:插入多个C++风格的单行注释
- Visual Studio Code "undefined reference to `WinMain@16'"
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- Visual Studio中的函数声明和函数定义问题
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- Visual Studio mkl_link_tool.exe链接错误
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 不同的Visual Studio版本中缺少.dll
- 用Visual Studio在C++中嵌入Julia
- Visual Studio 2017循环自动向量化问题
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- Visual Studio在尝试读取resource.txt文件时崩溃
- Visual Studio 2017 不允许我创建 C++ 专用模板