提问人:kadealicious 提问时间:12/24/2020 更新时间:12/24/2020 访问量:733
MinGW/GCC GLFW 链接器问题 - 未定义对“glfwInit”的引用
MinGW/GCC GLFW linker issue - undefined reference to "glfwInit"
问:
TL;DR - 我已经尝试了我能找到的所有解决方案,到目前为止没有任何效果。
您好,我已经搜索了很远很远,但我找不到问题的答案。当我尝试使用 GCC 编译我的 C 程序时,我得到了一个未定义的引用。首先,我尝试将 glfw .dll 放在与程序相同的位置,这似乎什么也没做。在此之后,我尝试从 MinGW 的“lib”目录中删除 glfw 库,并用 .dll 替换它们,并添加到我的 .c 文件的顶部(同样的错误)。我还尝试更改链接顺序,添加 -lopengl32 和 -lgdi32,重命名其中一个静态库以防编译器混淆等。这里似乎没有任何工作,但我以前以同样的方式安装和开发过 SDL2。glfwInit()
#define GLFW_DLL
main.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
答:
1赞
kadealicious
12/24/2020
#1
好了,我终于解决了问题。我按照此视频中的说明进行操作:https://www.youtube.com/watch?v=bIK95aWk-Bo。该视频的要点是您需要下载 CMake 以及此处找到的 GLFW 版本: https://www.glfw.org/
然后,您需要在设置源和构建路径后点击“配置”。在此之后,点击“生成”。然后,您需要打开命令提示符并找到新创建的 MakeFile。我使用的是 Windows,这意味着我需要使用命令 。然后,库文件已成功构建!mingw32-make
完成此操作后,我将创建的 .dll 和 .a 文件放在 MinGW“lib”文件夹中。然后,我复制了 .dll 并将其放在与可执行文件相同的目录中。
评论