windows vs2019 编译 SDL2, SDL_string.obj : error LNK2019: 无法解析的外部符号 memset

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,如下,

编译通过,结束!

 

 

posted @ 2019-10-25 23:10  SpaceVision  阅读(94)  评论(0编辑  收藏  举报