我想学习Ocaml或Haskell,并通过编写简单的游戏来实现。显然,有一个小问题:没有人关心Windows,而我想在Windows上本地实现。
Haskell有Cabal,其中有SDL,但由于传递给gcc的参数顺序的微不足道的问题,它无法构建,没有解决方法。 Ocaml甚至没有这个,所有内容都在源代码包中,无论是GLCaml还是OcamlSDL等。
是否有地方可以获取在Windows上使用Haskell或Ocaml工作的SDL而不必与十几个版本的编译器斗争?
我想学习Ocaml或Haskell,并通过编写简单的游戏来实现。显然,有一个小问题:没有人关心Windows,而我想在Windows上本地实现。
Haskell有Cabal,其中有SDL,但由于传递给gcc的参数顺序的微不足道的问题,它无法构建,没有解决方法。 Ocaml甚至没有这个,所有内容都在源代码包中,无论是GLCaml还是OcamlSDL等。
是否有地方可以获取在Windows上使用Haskell或Ocaml工作的SDL而不必与十几个版本的编译器斗争?
Haskell平台自带OpenGL绑定,应该可以在Windows上直接使用。
关于hackage上的SDL包,您可以使用cabal unpack SDL
获取源代码并自行修复问题。要安装带有您更改的软件包,请在解压缩的目录中运行cabal install
。无论如何,请给维护者留言,我相信他会提供帮助。
main
函数。实际的main
函数在DLL中!这可能是链接器参数必须交换的原因。简而言之,责任在于libSDL,其设计与任何外部接口都不兼容。 - Heinrich Apfelmusmain
,则这种方法效果不佳。最简单的解决方案似乎是通过FFI导出您的真实main
,并从一个小的C包装器中调用它,以便SDL可以随意操纵它。 - C. A. McCann这与SDL无关,但你提到了OpenGL。在OCaml中有LablGL绑定的OpenGL,可以直接使用。维基百科的例子(http://en.wikipedia.org/wiki/Objective_Caml#Triangle_.28graphics.29)编译并运行良好。
这不是SDL,但GLFW通过Cabal在Windows上与Haskell配合工作。
我的文章使用OpenGL 2进行高保真图形(2008年2月25日)解释了如何使用GLCaml绑定在OCaml中编写基于OpenGL的应用程序,该应用程序使用顶点和片段着色器(以Phong着色器为例)。在OCaml Journal上有9篇文章介绍OpenGL,尽管大多数使用旧版LablGL库进行OpenGL 1.1。
我曾经尝试在Linux下使用Haskell运行OpenGL,但是在2007年失败了。Haskell平台可能已经改变了这一点,但我既没有时间自己尝试,也从未听说过有人用它来做这件事。
然而,OCaml和Haskell都必须依赖于脆弱的低级绑定到OpenGL,因为它们是独立的语言,没有人成功地使用它们来开发任何重要的商业软件。由于你在Windows上,F#+XNA是一个更合理的选择,因为XNA经过了尝试和测试,而F#具有安全的高级接口。通过Google搜索可以让你了解到你将成为多么先锋:+haskell +opengl在Google上有437个结果,而+ocaml +opengl只有347个结果。