Eclipse 2021-06 CDT下GLFW Vulkan应用无法在IDE内启动问题求解
解决方案
根本原因
你当前的编译链接阶段配置完全正确,问题出在Windows运行时动态库加载逻辑:Windows加载exe时会优先在exe所在目录查找依赖的dll,其次才会遍历系统PATH环境变量下的目录。你手动复制dll到exe目录可以正常运行,就说明是Eclipse启动应用时,运行环境的PATH没有包含GLFW dll所在的目录,导致加载失败。
修复步骤
方案1:修改Eclipse运行/调试环境变量(推荐,无需修改文件结构)
- 打开Eclipse顶部菜单栏的「Run(运行)」→「Run Configurations(运行配置)」,调试的话选「Debug Configurations(调试配置)」,找到你当前Vulkan项目对应的C/C++应用配置项
- 切换到「Environment(环境)」标签页
- 点击「Add(新增)」按钮:
- 变量名填
PATH - 变量值填你预编译GLFW包中dll所在的完整路径,比如你用的是mingw64版本,路径就是预压缩包解压后的
lib-mingw-w64文件夹的完整路径,如有其他依赖dll的路径可以用英文分号隔开一并填入 - 务必勾选「Append environment to native environment(将配置追加到原生环境)」选项,不要选择替换原有环境,避免系统基础环境变量丢失
- 变量名填
- 保存配置后重新运行/调试即可
方案2:配置构建后自动复制dll到输出目录(适合固定项目,打包更方便)
如果不想每次修改运行环境,可以配置编译完成后自动把依赖dll复制到exe输出目录:
- 右键项目选择「Properties(属性)」,找到「C/C++ Build(C/C++构建)」→「Settings(设置)」
- 切换到「Build Steps(构建步骤)」标签,在「Post-build steps(构建后步骤)」的命令输入框中添加:
xcopy /Y "你的GLFW根目录\lib-mingw-w64\glfw3.dll" "${OutputDir}" - 保存配置后每次编译完成,Eclipse都会自动把GLFW dll复制到exe所在目录,无需手动操作
内容的提问来源于stack exchange,提问作者MonSapin
相关产品推荐
相关产品推荐

