SDL 就不介绍了,我也是第一次使用,下载地址:https://www.libsdl.org/
SDL2下载下来后,发现里面有cmakelist,老规矩,用cmake-gui 进行配置编译,什么参数都没改,一切使用默认,
Configure===>Generate===>Open project
Debug模式一次全面通过,感叹SDL的cmake工作做的很好。Release模式应该也没问题吧?
当然,没问题就不到这来写了,报错:
SDL_string.obj : error LNK2019: 无法解析的外部符号 memset,该符号在函数 SDL_vsnprintf_REAL 中被引用于是打开SDL_string看了下源码,发现cmake配置使用LIBC的情况下,可以顺利生成通过Release版本。我使用的是默认的,源上看应该是能调用SDL_memset的地方会调用这个SDL_memset函数,没看到SDL_vsnprintf哪里调用了memset。这个函数应该是windows最基本的库里面,于是搜索一下,找到这个链接
https://stackoverflow.com/questions/58288692/cant-build-solution-in-release-mode-for-sdl-library-on-vs-2019
当然你可以找到cmakelist.txt中的第1338行,
把 list(APPEND EXTRA_LIBS user32 gdi32 winmm imm32 ole32 oleaut32 version uuid advapi32 shell32) 改成 list(APPEND EXTRA_LIBS vcruntime user32 gdi32 winmm imm32 ole32 oleaut32 version uuid advapi32 shell32)
我比较懒,直接在项目附加依赖项里添加vcruntime.lib,如下,
编译通过,结束!