2

次のソース ファイル (sdl.hs) があります。

module Main where

import Graphics.UI.SDL.Mixer.Music
import Graphics.UI.SDL.Mixer
import Graphics.UI.SDL

main = loadMUS "" 

私は次のことを試します:

ghc --make sdl.hs
C:\Program Files (x86)\Haskell\SDL-mixer-0.6.1\ghc-7.6.3/libHSSDL-mixer-0.6.1.a(Music.o):fake:(.text+0x10): undefined reference to `Mix_FreeMusic' 
...

これらのエラーが数十個表示されます。できる限りのこと (更新、クリーン インストール、Google) を試しましたが、Haskell の FFI とそれがどのように機能するかについてはほとんど知りません。

追加情報:

c:\>gcc --version
realgcc.exe (GCC) 4.5.2
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

c:\>ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.6.3

c:\>cabal install sdl sdl-mixer
Resolving dependencies...
All the requested packages are already installed:
SDL-0.6.4
SDL-mixer-0.6.1
Use --reinstall if you want to reinstall anyway.

GHCi から SDL に関連するものを開始しようとすると、次の結果が得られます。

Prelude> import Graphics.UI.SDL.Mixer.Music
Prelude Graphics.UI.SDL.Mixer.Music> loadMUS ""
Loading package SDL-0.6.4 ... <interactive>: Unknown PEi386 section name `.idata$4' (while processing: C:\sdl\SDL-1.2.15\lib\libSDL.dll.a)
ghc.exe: panic! (the 'impossible' happened)
  (GHC version 7.6.3 for i386-unknown-mingw32):
        loadArchive "C:\\sdl\\SDL-1.2.15\\lib\\libSDL.dll.a": failed

Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

関連しているように見えるこれを見つけましたが、しばらく前から存在しており、ウィンドウが提案された「修正」を取得する見込みはありません。

4

1 に答える 1

2

GHC を直接呼び出すのではなく、Cabal を使用する必要があります。しかし、それはここでは範囲外です。:)

この特定の問題の解決策は、通常、次のように GHC コマンド ラインで C ライブラリを一覧表示することです。

ghc --make -lSDL -lSDL_mixer sdl.hs

私は Windows (または GHC との動的リンク) を使用していないため、このコマンドが機能するかどうかはわかりません。それはただの考えです。

于 2013-06-20T03:28:53.490 に答える