VS2019配合Premake5构建项目时GLFW出现LNK2019链接错误如何解决
GLFW链接错误排查与修复方案
根因定位
报错中提到的未解析外部符号均为GLFW的Windows平台专属实现函数,你当前使用的GLFW版本为3.3及以上版本,该版本新增了win32_module.c源文件用于实现Windows平台的模块加载、平台选择等逻辑,你的Premake脚本中没有将该文件加入Windows平台的编译列表,导致GLFW静态库缺失对应实现。
修复操作
- 修改GLFW项目的Premake脚本,在Windows系统的编译文件列表中添加
src/win32_module.c,修改后的对应片段如下:
filter "system:windows" systemversion "latest" staticruntime "On" files { "src/win32_init.c", "src/win32_joystick.c", "src/win32_monitor.c", "src/win32_time.c", "src/win32_thread.c", "src/win32_window.c", "src/win32_module.c", -- 新增该行 "src/wgl_context.c", "src/egl_context.c", "src/osmesa_context.c" } defines { "_GLFW_WIN32", "_CRT_SECURE_NO_WARNINGS" }
- 清理之前生成的编译缓存、bin和bin-int目录,重新执行Premake生成VS项目,之后全量重新编译解决方案即可解决链接错误。
额外注意项
确保GLFW、GLAD和核心应用三个项目的运行时配置一致:如果GLFW开了staticruntime "On",核心应用也要对应使用静态运行时(/MT对应Release、/MTd对应Debug),如果核心应用使用动态运行时,将GLFW配置中的staticruntime "On"改为staticruntime "Off"即可。
内容的提问来源于stack exchange,提问作者gui2one
相关产品推荐
相关产品推荐

