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

MinGW编译GLFW出现Undefined reference error问题求助

GLFW链接错误:undefined reference 解决方法

问题描述

配置完GLFW和GLAD环境后,编译Makefile时出现链接错误,提示GLFW相关函数未定义:

../src/main.cpp:9: undefined reference to glfwInit' ../src/main.cpp:10: undefined reference to glfwWindowHint'
...

使用的main.cpp代码:

#include <glad/glad.h>
#include <GLFW/glfw3.h>

#include <iostream>

int main() {
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    GLFWwindow* window = glfwCreateWindow(800, 600, "this is NOT a window!", NULL, NULL);
    if (window == NULL) {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }

    glfwMakeContextCurrent(window);

    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }

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

        glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);

        glfwSwapBuffers(window);
    }

    glfwTerminate();
    return 0;
}

当前使用的编译命令:

g++ -g --std=c++17 -I../include -L../lib ../src/*.cpp ../src/glad.c -lglfw3dll -o main

解决步骤

1. 添加GLFW动态库宏定义

如果使用的是GLFW动态库版本,编译时必须定义GLFW_DLL宏,否则编译器会默认尝试链接静态库符号,导致匹配失败。在编译命令中加入-DGLFW_DLL参数。

2. 确认链接库顺序(已符合要求)

GCC链接器按从左到右顺序处理依赖,库文件必须放在依赖它的源文件之后。当前命令中-lglfw3dll的位置正确,若之前位置错误需调整到所有源文件之后。

修正后的编译命令

g++ -g --std=c++17 -DGLFW_DLL -I../include -L../lib ../src/*.cpp ../src/glad.c -lglfw3dll -o main

3. 额外检查项

  • 确认../lib目录下存在对应平台的GLFW动态库:Windows下为glfw3dll.lib(链接用)和glfw3.dll(运行用),Linux下为libglfw3dll.so
  • Windows环境下,运行程序时需将glfw3.dll放在可执行文件同目录或系统PATH路径中
  • 确保GLFW库的位数(32/64位)与编译器目标平台一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:15:45