微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Windows 上使用 Cygwin 编译和链接 OpenGL/GLFW 程序?

如何解决如何在 Windows 上使用 Cygwin 编译和链接 OpenGL/GLFW 程序?

我努力寻找有关使用 Cygwin-g++ 编译基本 OpenGL/GLFW 示例 Windows 的文档,因此我决定发布我自己问题的答案。


    #define GLFW_DLL
    #include <GLFW/glfw3.h>
    #include <iostream>
    
    int main(void) {
        std::cout << "Code works" << std::endl;
        if (!glfwInit())
            return -1;
        glfwTerminate();
        return 0;
    }

  • 编译:{{1​​}}

问题

  • 代码会编译和构建,但不会出现输出窗口
  • 我当前的链接没问题,但不同的组合会导致 g++ -Wall -Iinclude main.cpp -o main.exe -L<folder glfw3.dll is in> -lglfw3 -lopengl32 -lgdi32 错误

解决方法

这个答案是对来自University of Michigan's EECS 487 building OpenGL/GLFW Apps

的解决方案的总结

安装验证 检查这些文件是否存在于 cygwin64 目录下。

  • 头文件:/usr/include/w32api/GL
  • 静态库:/lib/w32api/lib{opengl,gdi}32.a

安装 GLFW 二进制文件 GLFW Binaries

将文件从 GLFW 二进制文件复制到 Cygwin

  • \cygwin64\usr\x86_64-pc-cygwin\ 中粘贴 GLFW 二进制文件 include 中的包含文件。你应该有 \cygwin64\usr\x86_64-pc-cygwin\include\GLFW 里面的 .h 文件

  • C:\cygwin64\usr\x86_64-pc-cygwin\lib 中粘贴来自 GLFW 二进制文件的 lib-mingw-w64 文件夹中的 libglfw3.a 和 libglfw3dll.a

  • \cygwin64\usr\x86_64-pc-cygwin\bin 中粘贴上述文件夹中的 glfw3.dll

  • \cygwin64\usr\x86_64-pc-cygwin\bin 添加到路径

  • 编译 g++ -Wall -Iinclude main.cpp -o main.exe -LC:\cygwin64\usr\x86_64-pc-cygwin\bin -lglfw3 -lopengl32 -lgdi32(将 -L 更改为 cygwin 的存储位置)。

  • 第一个链接包含专门使用 MingW 工具链以及 Linux、MacOS 和 Visual Studios 进行构建的说明
,

为 Cygwin 构建 GLFW 的替代解决方案

下载 glfw-3.3.4.zip 然后

$ unzip glfw-3.3.4.zip
$ cd glfw-3.3.4
$ ccmake .

将 BUILD_SHARED_LIBS 设置为 ON。配置生成

$ make
$ make install

Install the project...
-- Install configuration: ""
-- Up-to-date: /usr/local/include/GLFW
-- Up-to-date: /usr/local/include/GLFW/glfw3.h
-- Up-to-date: /usr/local/include/GLFW/glfw3native.h
-- Up-to-date: /usr/local/lib/cmake/glfw3/glfw3Config.cmake
-- Up-to-date: /usr/local/lib/cmake/glfw3/glfw3ConfigVersion.cmake
-- Up-to-date: /usr/local/lib/cmake/glfw3/glfw3Targets.cmake
-- Up-to-date: /usr/local/lib/cmake/glfw3/glfw3Targets-noconfig.cmake
-- Up-to-date: /usr/local/lib/pkgconfig/glfw3.pc
-- Up-to-date: /usr/local/lib/libglfw.dll.a
-- Up-to-date: /usr/local/bin/cygglfw-3.dll

因此,您将在 /usr/local
下安装适当的 Cygwin 构建 之后,在X服务器下运行

$ g++ main.cpp -o main -lglfw -L/usr/local/lib

$ ./main.exe 
Code works

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。