haskell gloss

Gloss 是一个用于创建图形和动画的 Haskell 库,特别适合用来制作 2D 图形和动画。它提供了简洁的 API 来进行图形渲染,并且能够轻松地在 Haskell 中进行动画和交互式程序开发。

wsl运行gloss

一开始我使用wsl的archlinux启动gloss项目,但是build失败,报错如下

1
2
3
4
5
Error: [S-7282]
Stack failed to execute the build plan.
While executing the build plan, Stack encountered the error:
[S-7011]
While building package GLURaw-2.0.0.5 (scroll up to its section to see the error) using:

GLURaw-2.0.0.5 构建失败,尝试了安装opengl,glut等依赖依旧没能解决,估计是因为wsl的图形驱动没能处理好。索性我在windows尝试了一番。

windows运行gloss

使用stack新建项目并添加gloss依赖,这时候stack build正常了,但是stack run会报错

1
2
F:\project-private\test\test-2d>stack run
test-2d-exe.EXE: user error (unknown GLUT entry glutInit)

这是因为缺少opengl的接口,程序需要通过opengl接口访问windows显卡的opengl。
现在需要安装freeglut,官网推荐windows使用msys2进行安装。

MSYS2(Minimal SYStem 2)是一个在 Windows 平台上提供类 Unix 环境的工具集。它为 Windows 用户提供了一些 Unix 风格的命令行工具、库和开发环境,主要用于软件开发,尤其是在与 Linux 或类 Unix 系统进行交互时,提供了一个类似的开发体验。

安装好msys2后,打开msys2开始安装

搜索freeglut相关的包

1
pacman -sS freeglut

找到w64版本安装

1
pacman -S mingw-w64-x86_64-freeglut

安装完成后还需要找到msys2安装软件的bin目录,添加到环境变量中,这样在windows的haskell程序才能找到。

以下是msys2安装软件的bin目录

1
D:\Applications\msys2\mingw64\bin

在该目录能发现msys2安装的windows可用的dll文件

1
D:\Applications\msys2\mingw64\bin\libfreeglut.dll

添加完环境变量记得重新开启终端,新的终端才能读取到新的环境变量。