链接到Haskell中的SDL和其他库

Ale*_*lex 3 linker haskell sdl

如何告诉ghc告诉ld将已编译的二进制文件链接到SDL库?

我有一个source.hs:

    import Prelude
    import Graphics.UI.SDL as SDL
    import Data.Maybe
    import GHC.Word
    import Control.Applicative
    ...
Run Code Online (Sandbox Code Playgroud)

当我做:

    ghc source.hs
Run Code Online (Sandbox Code Playgroud)

我得到了一堆与此类似的链接错误:

    pong.o: In function `s1Ww_info':
    (.text+0x449): undefined reference to `SDLzm0zi5zi9_GraphicsziUIziSDLziRect_Rect_con_info'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

C. *_*ann 6

如果由于某种原因你不想使用GHC的--make选项,这应该工作:ghc source.hs -lSDL -package SDL

如果您需要一些非核心SDL子库,则必须单独包含这些子库,例如: ghc source.hs -lSDL -SDL_ttf -package SDL -package SDL-ttf

您可能还需要考虑使用cabal(Haskell打包系统)设置构建文件,特别是如果您的程序扩展到几个源文件之外.

还有一个警告 - 你没有提到你正在使用的操作系统,但是上次我尝试Haskell的SDL绑定只能在Linux上"开箱即用" - Windows和OS X都会导致问题,到期SDL在这些平台上启动时使用的丑陋黑客.