【问题标题】:Setting up GLFW with MinGW使用 MinGW 设置 GLFW
【发布时间】:2012-10-04 21:28:34
【问题描述】:

我正在尝试使用 GLFW 学习 OpenGL,但遇到了一些问题。

这是我的 main.cpp:

#include <GL/glfw.h>

int main()
{
    glfwInit();
    glfwSleep( 1.0 );
    glfwTerminate();
}

这是我项目的文件夹结构:

Project
+- glfw.dll
+- main.cpp

这是我提取 GLFW 文件的地方:

MinGW
+- include
|   +- GL
|      +- glfw.h
+- lib
   +- libglfw.a
   +- libglfwdll.a

这就是我尝试构建程序的方式:

g++ main.cpp -o main.exe -lglfwdll

这些是我得到的错误:

C:\Users\Dark\AppData\Local\Temp\cc0ZgTVp.o:main.cpp:(.text+0xf): undefined reference to `_glfwInit'
C:\Users\Dark\AppData\Local\Temp\cc0ZgTVp.o:main.cpp:(.text+0x25): undefined reference to `_glfwSleep'
C:\Users\Dark\AppData\Local\Temp\cc0ZgTVp.o:main.cpp:(.text+0x2a): undefined reference to `_glfwTerminate'
collect2.exe: error: ld returned 1 exit status

我错过了什么吗?

【问题讨论】:

  • 使用大 L 选项来指定库所在的路径,像这样g++ ... -L /path/to/lib 还记得 MinGW 使用与 Visual Studio 不同的 ABI 集,因此请确保您使用的所有库using for MinGW 是为 MinGW 编译的。
  • 我已经为 -L 尝试了很多文件夹,包括 glfw.dll 所在的D:\Dropbox\C++\Untitled,但没有成功,我下载的 .zip 文件有一个单独的 lib-mingw 文件夹,所以我认为这些是正确的库。
  • codeblocks 在 Windows 下使用 MinGW,所以我想你可以通过阅读这个 stackoverflow.com/questions/7856648/glfw-and-codeblocks 来解决你的问题
  • 除了第 6 步:“现在在代码中创建 GLFW 项目时,我已经完成了所有操作:::blocks 为 glfw 位置提供路径 C:\Program Files\CodeBlocks\MinGW” " 因为那是 Code::Blocks 特定的步骤。
  • g++ -print-search-dirs 此命令将打印 g++ 考虑的所有路径,如果库不在此处,则需要使用 -L 选项添加它。可能还有其他问题,但我目前没有在 Windows 上编程,而且我已经几天和几个月没有接触 Windows,但是你可以得到非常讨厌的行为,比如来自 UAC 或不同 ABI 标准的用户限制。如果你想解决这个问题,只需使用 Codeblocks,你将使用与现在相同的 MinGW,至少,你得到了支持。大多数这些问题只是由 Windows 操作系统引起的,而不是由 MinGW 本身引起的。

标签: mingw glfw


【解决方案1】:

我创建了 makefile,它是用于 C 的,但你可以编辑它:

all:
    gcc -I ./include ./src/*.c -L ./lib -lglfw3dll -lopengl32 -lmingw32 -lgdi32 -luser32 -lkernel32 -lglew32 -o ./bin/main
openglfolder:.
│   

makefile

│
├───bin
│       glew32.dll
│       glfw3.dll
│       main.exe

│
├───include
│       eglew.h
│       glew.h
│       glfw3.h
│       glxew.h
│       wglew.h

│
├───lib
│       glew32.dll
│       glew32.lib
│       glew32s.lib
│       libglfw3.a
│       libglfw3dll.a

│
└───src
        main.c

编辑:这仅适用于 Windows

【讨论】:

    【解决方案2】:

    根据您的环境下载二进制文件here

    Project
    +- glfw3.dll (You can put it in System32 or SysWOW64 instead.)
    +- main.cpp
    
    MinGW
    +- include
    |   +- GLFW
    |      +- glfw3.h
    +- lib
       +- libglfw3.a
       +- libglfw3dll.a (Renamed from glfw3dll.a)
    
    g++ -c main.cpp
    g++ -o main.exe main.o -lglfw3dll -lopengl32
    

    【讨论】:

    • 有没有人用 MingW 预先打包 GLFW,这样我们就不用费心了?如果是这样,这应该会增加可以尝试使用 OpenGL 进行实验的程序员的数量。看在上帝的份上,已经是 2014 年了,Windows 还没有想出一个可以正常工作的标准化包安装机制。
    • 2019.5仍然没有GLFW的包,请说我错了
    • pacman -S mingw-w64-glfw, msys2 命令使用 glfw 和 mingw64
    • 如果它可以帮助其他人,跟进@MrMuMu 的评论,我必须使用pacman -S mingw-w64-x86_64-glfw 安装mingw-w64-x86_64-glfw 包,并使用g++ main.cpp -I/mingw64/include/ -L/mingw64/lib -lglfw3 -lopengl32 进行编译(尽管我可能错误配置了我的路径)
    • @ChristianReall-Fluharty 我可以得到一些帮助
    猜你喜欢
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多