如何在Visual Studio 2022中静态链接SDL2并摆脱DLL依赖?
在Visual Studio 2022中实现SDL2静态链接的方法
关于你提到的“将DLL静态编译为lib库”的疑问
不需要这么做。SDL官方提供的开发包中已经包含了预编译的静态库文件,直接使用即可。所谓把DLL转成lib的操作,通常是针对只有DLL却没有对应导入库的场景,而SDL的静态链接需求完全可以通过官方提供的静态库来满足。
具体配置步骤
获取SDL2静态库
从SDL官方下载对应Visual Studio版本的开发包,解压后在lib目录下的对应平台子文件夹(如x86或x64)里,能找到SDL2-static.lib文件,这就是我们需要的静态库。配置项目包含与库目录
右键项目 -> 属性 -> VC++目录:- 包含目录:添加SDL解压目录下的
include文件夹路径 - 库目录:添加SDL解压目录下对应平台的
lib子文件夹路径(比如lib/x64)
- 包含目录:添加SDL解压目录下的
设置预处理器宏
项目属性 -> C/C++ -> 预处理器 -> 预处理器定义,添加两个宏:SDL_STATIC SDL_MAIN_HANDLED其中
SDL_STATIC告诉编译器我们要使用静态链接版本的SDL;SDL_MAIN_HANDLED是避免SDL自动接管main函数引发的编译问题。配置链接器依赖
项目属性 -> 链接器 -> 输入 -> 附加依赖项,添加:SDL2-static.lib winmm.lib imm32.lib version.lib setupapi.lib后面几个是SDL静态链接时需要依赖的系统库,缺少的话会出现链接错误。
匹配运行库设置
项目属性 -> C/C++ -> 代码生成 -> 运行库,选择多线程(/MT)(Release模式)或多线程调试(/MTd)(Debug模式),确保和SDL静态库的编译选项一致,避免因运行库不匹配导致的冲突。
完成以上配置后,编译出来的程序就不需要携带SDL2的DLL文件了,所有SDL相关代码都会被静态链接到你的可执行文件中。
内容的提问来源于stack exchange,提问作者user22310580
相关产品推荐
相关产品推荐

