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最基本的库里面,于是搜索一下,找到这个链接
当然你可以找到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,如下,
编译通过,结束!