如何构建 OpenGL + GLEW + GLFW 程序,以便在带有 exe 的文件夹中不需要 glfw3.dll?

How to build OpenGL + GLEW + GLFW program so that glfw3.dll won't be needed in the folder with exe?

本文关键字:exe 文件夹 dll glfw3 不需要 构建 何构建 OpenGL 程序 GLFW GLEW      更新时间:2023-10-16

我已经编译并执行了一个简单的OpenGL + GLEW + GLFW程序,该程序是从教程中复制的。我在 Win 7 x64 机器上使用C++和 CodeBlocks 13.12。

仅当 exe 所在的 bin/Debug 文件夹中存在 glfw3.dll 文件时,程序才会执行。否则会给出错误:程序无法执行,因为在系统中找不到 glfw.dll。我使用了默认的代码块设置。

如何构建程序,以便 glfw3.dll 不需要在带有 exe 文件的文件夹中,而是内置到程序中?

静态链接 GLFW:

GLFW 库的静态版本名为 glfw3。使用此版本时,还需要与GLFW使用的一些库链接。

在Windows下链接使用静态GLFW版本的程序时,必须与opengl32链接。如果您使用的是 GLU,则还必须与 glu32 链接。

我使用 Nuwen 的 mingw 发行版并编译: g++ glfwtest.cpp -o glfwtest.exe -lglew32 -lglfw3 -lopengl32 -lgdi32

从网站:GLFW 库的静态版本名为 glfw3。使用此版本时,还需要与GLFW使用的一些库链接。

在Windows下链接使用静态GLFW版本的程序时,必须与opengl32链接。在某些版本的 MinGW 上,您还必须显式链接到 gdi32,而其他版本的 MinGW 则将其与其他依赖项(如 user32 和 kernel32)一起包含在默认库中。如果您使用的是 GLU,则还必须与 glu32 链接。

http://www.glfw.org/docs/latest/build.html#build_link_win32

所以就我而言,我必须链接 gdi32。