如何通过命令提示符在Windows上编译GLFW程序

How to compile a GLFW program on Windows via command prompt?

本文关键字:编译 GLFW 程序 Windows 何通过 命令提示符      更新时间:2023-10-16

我正在尝试使用OpenGL&GLFW。我已经在Ubuntu上编译了我当前的代码,没有任何问题,但当我在Windows上尝试它时,我会遇到各种未解决的外部错误。

我在我的main.cppgame.h文件中都包含了:

#include<GLFW/glfw3.h>

我尝试过使用:

#define GLFW_DLL
#include<GLFW/glfw3.h>

然后链接glfwdll.lib而不是glfw3.lib,这解决了一些错误,但不是所有错误。不管怎样,我在Ubuntu上使用静态库,所以我也想在Windows上使用它。

经过研究,我尝试包括User32.libkernel32.lib,删除默认库(使用Zl),以及其他一些我记不住的东西(但它们不起作用)。

我当前的编译命令如下:

@echo off
cl /Zl /MT game.cpp /I C:devinclude /link "C:Program Files (x86)Windows Kits8.1Libwinv6.3umx64User32.lib" "C:Program Files (x86)Windows Kits8.1Libwinv6.3umx64kernel32.lib" C:devlibglfw3.lib C:devlibOpenGL32.lib
cl /Zl main.cpp /I C:devinclude /link C:devlibglfw3.lib C:UsersDanielprojectsgamegame.obj C:devlibOpenGL32.lib "C:Program Files (x86)Windows Kits8.1Libwinv6.3umx64User32.lib" "C:Program Files (x86)Windows Kits8.1Libwinv6.3umx64kernel32.lib" 

这样,对象文件编译起来就没有问题,但对于主文件,我的对象文件中的所有glfw和openGl函数(无论我是否使用它们)都会不断出现未解决的外部错误,这些错误来自对象文件和glfw.lib文件。

真正让我困惑的是,我的游戏类对象文件编译时没有任何问题,但当我链接它时,它会出错。

有人知道如何编译这个吗?

我已经研究了一段时间,我发现有人说如果你使用32位二进制文件,它就可以工作。当我遇到这个问题时,我一直在使用64位二进制文件。我下载了32位二进制文件,并用同样的方法进行了尝试,它编译没有问题。

我不知道为什么会这样,但对于任何有我问题的人来说,32位二进制文件都有效。

我遇到了与您描述的完全相同的问题,我尝试了完全相同的解决方案,这些解决方案确实消除了opengl函数的链接错误,但glfw函数的链接误差仍然存在。然后我下载了64位glfw二进制文件,并尝试了64位glfw二进制文件而不是32位glfw二进制,结果成功了!我不知道这是因为我在64位机器上,还是因为我有用于64位机器的mingw(我有x86_64-w64-mingw32)。我的建议是同时尝试64位的glfw和32位的glfw二进制文件。以下是我在成功编译并链接项目gcc main.c libglfw3.a -lopengl32 -lgdi32时在命令提示符中所写的内容。如果这不起作用,请尝试编写gcc main.c libglfw3.a -lopengl32 -lgdi32 -lkernel32 -luser32 -lws2_32。值得一提的是,我将libglfw3.a文件与main.c文件放在同一目录中。我希望这能有所帮助!