在 Windows 上为 Haskell (GHC) 安装 SDL

Joh*_*ler 2 haskell sdl cabal

背景:

我一直在使用gloss 库进行一些简单的图表工作。但是当需要一些更具交互性的东西时,我发现我想要一个更强大的库。在做了一些研究之后,我决定我喜欢 SDL 库的功能,并想尝试为它安装 Haskell 绑定。到这一步我已经失败了。

第1部分:

如何安装和配置 SDL 二进制文件,以便 Haskell 绑定可以使用它们?

第2部分:

Hackage 上众多且记录不完整的 SDL 包中的哪一个是当前社区中的首选绑定?如何让该软件包正确安装?

第 3 部分:(可选)

如果 SDL 不适合 Haskell 开发,那么首选的替代方案是什么?

ftl*_*ftl 5

我将回答您关于 SDL2 的问题(也应该对 SDL1 进行一些修改)。

  1. 为 Windows 安装 pkg-config(如何在 Windows 中安装 pkg config?

    这个工具非常重要。它被各种 Cabal 包用于搜索库并包含链接和编译的方向。

  2. 下载适用于 Windows/MinGW 的 SDL 开发库:http : //libsdl.org/release/SDL2-devel-2.0.3-mingw.tar.gz

    如果安装了32位版本的Haskell平台,解压文件夹i686-w64-mingw32

    对于 64 位版本,提取x86_64-w64-mingw32

    您将获得以下布局:

    包括
    共享
    bin
    lib

  3. 使用 pkg-config “注册”库。

    将 lib/pkgconfig/sdl2.pc 复制到 pkg-config.exe 的文件夹中,或者相应地修改/创建 PKG_CONFIG_PATH。检查您是否正确设置了所有内容:

    C:\pkg-config --list-all | grep sdl2

    sdl2 sdl2 - Simple DirectMedia Layer 是一个跨平台多媒体库,旨在提供对音频、键盘、鼠标、操纵杆、通过 OpenGL 的 3D 硬件和 2D 视频帧缓冲区的低级访问。

  4. 将 bin 文件夹添加到 PATH 环境变量中。

  5. 通过 Cabal 安装程序安装 sdl2 包并告诉 Cabal 在哪里可以找到你的库。

    示例:cabal install sdl2 --extra-include-dirs=C:\lib\sdl2\include --extra-lib-dirs=C:\lib\sdl2\lib\

为了测试我的安装,我写了一个小例子:

https://github.com/ftl2014/haskell-stuff/blob/master/sdl/

买者自负:

如果 Cabal 抱怨“缺少”库,可能是因为该库实际上已找到但不兼容(例如使用 32 位而不是 64 位版本)或已损坏。头文件也是如此。出于某种原因,Cabal 抱怨找不到 SDL.h,我不得不使用存档的根包含文件夹中的标题(但也许我只是喝了太多 Kool-aid)。