背景:
我一直在使用gloss 库进行一些简单的图表工作。但是当需要一些更具交互性的东西时,我发现我想要一个更强大的库。在做了一些研究之后,我决定我喜欢 SDL 库的功能,并想尝试为它安装 Haskell 绑定。到这一步我已经失败了。
第1部分:
如何安装和配置 SDL 二进制文件,以便 Haskell 绑定可以使用它们?
第2部分:
Hackage 上众多且记录不完整的 SDL 包中的哪一个是当前社区中的首选绑定?如何让该软件包正确安装?
第 3 部分:(可选)
如果 SDL 不适合 Haskell 开发,那么首选的替代方案是什么?
我将回答您关于 SDL2 的问题(也应该对 SDL1 进行一些修改)。
为 Windows 安装 pkg-config(如何在 Windows 中安装 pkg config?)
这个工具非常重要。它被各种 Cabal 包用于搜索库并包含链接和编译的方向。
下载适用于 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
使用 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 视频帧缓冲区的低级访问。
将 bin 文件夹添加到 PATH 环境变量中。
通过 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)。