【问题标题】:MinGW/GCC GLFW linker issue - undefined reference to "glfwInit"MinGW/GCC GLFW 链接器问题 - 未定义对“glfwInit”的引用
【发布时间】:2021-04-02 13:57:41
【问题描述】:

TL;DR - 我已经尝试了所有我能找到的解决方案,到目前为止没有任何效果。

你好,我已经搜索了很多,但我找不到我的问题的答案。当我尝试使用 GCC 编译我的 C 程序时,我得到一个未定义的对 glfwInit() 的引用。首先,我尝试将 glfw .dll 放在与程序相同的位置,但这似乎什么也没做。在此之后,我尝试从 MinGW 的“lib”目录中删除 glfw 库并用 .dll 替换它们,并将 #define GLFW_DLL 添加到我的 .c 文件的顶部(同样的错误)。我还尝试更改链接顺序,添加 -lopengl32 和 -lgdi32,重命名其中一个静态库以防编译器被混淆等。这里似乎没有任何工作,但我之前在同样的时尚。

ma​​in.c:

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

int main(int argc, char **argv) {
    if(!glfwInit()) {
        printf("Failed!");
        return -1;
    }
    printf("Success!");
    getch();
    return 0;
}

编译器说明:

gcc -std=c99 -o project.exe main.c -lglfw3 -lglfw3dll

【问题讨论】:

  • 你试过加-L吗
  • 是的,我尝试的其中一件事是添加 -L 并指定库的目录。不幸的是,同样的错误。

标签: c gcc mingw glfw undefined-reference


【解决方案1】:

好的,我终于解决了这个问题。我按照此视频中的说明进行操作:https://www.youtube.com/watch?v=bIK95aWk-Bo。视频的要点是您需要下载 CMake 以及此处找到的 GLFW 版本:https://www.glfw.org/

然后,您需要在设置源和构建路径后点击“配置”。在此之后,点击“生成”。然后,您需要打开命令提示符并找到新创建的 MakeFile。我使用的是 Windows,这意味着我需要使用命令 mingw32-make。然后库文件构建成功!

完成此操作后,我将创建的 .dll 和 .a 文件放在 MinGW “lib” 文件夹中。然后,我复制了 .dll 并将其放在与我的可执行文件相同的目录中。

【讨论】:

    猜你喜欢
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 2010-09-13
    相关资源
    最近更新 更多