You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MinGW g++编译C++代码无法链接glfw3.lib的问题问询

问题根本原因

你当前使用的是Visual Studio编译生成的MSVC格式.lib静态库,MinGW的ld链接器默认无法直接识别该格式,同时你的链接参数写法也存在错误。

可行解决方案

方案1:使用MinGW版本GLFW预编译库(最稳妥)

  • 下载对应MinGW版本的GLFW预编译包,解压后找到和你的MinGW架构(32位/64位)匹配的libglfw3.a或libglfw3dll.a文件
  • 替换原有vc2019库路径为MinGW版GLFW的lib路径,修改编译命令如下:
g++ -o Test main.cpp -I C:\Users\Shaurya\Documents\Opengl\Dependencies\GLFW\include -L <替换为MinGW版GLFW的lib路径> -lglfw3 -lopengl32 -lgdi32 -luser32 -lkernel32
  • 注意MinGW下-l参数不需要加.lib后缀,会自动查找前缀为lib、后缀为.a的库文件,同时GLFW运行需要依赖Windows系统的几个基础图形库,必须加上末尾的几个链接参数。

方案2:转换现有MSVC格式lib为MinGW可用格式

如果不想重新下载GLFW,可通过工具转换当前的.lib文件:

  • 确保你的MinGW环境已安装pexports和dlltool工具(dlltool一般默认自带,pexports可通过MinGW包管理器安装)
  • 找到对应版本的GLFW dll文件,执行命令导出def定义文件:
    pexports glfw3.dll > glfw3.def
  • 执行命令生成MinGW可识别的.a静态库:
    dlltool -d glfw3.def -l libglfw3.a
  • 将生成的libglfw3.a放到你的库路径下,再用方案1中的编译命令编译即可。

方案3:直接指定lib完整路径编译

如果嫌转格式麻烦,也可以直接把.lib文件的完整路径当作普通输入文件传给g++,不需要用-l参数:

g++ -o Test main.cpp -I C:\Users\Shaurya\Documents\Opengl\Dependencies\GLFW\include C:\Users\Shaurya\Documents\Opengl\Dependencies\GLFW\lib-vc2019\glfw3.lib -lopengl32 -lgdi32 -luser32 -lkernel32

该方法仅对部分兼容的MSVC静态库有效,若仍报错优先选择方案1。

代码修正提示

你的代码中主循环的判断条件写反了,当前逻辑是窗口需要关闭时才执行循环,会导致窗口一闪就退出,正确写法如下:

while(!glfwWindowShouldClose(window)){
    glfwSwapBuffers(window);
    glfwPollEvents();
}

内容的提问来源于stack exchange,提问作者SHikha Mittal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:42:00