2013-04-14 79 views
6

我終於在Windows上安裝了Haskell SDL bindings。使用這個:Haskell SDL:找不到mingw32.dll

> $env:Path += ";C:\SDL;C:\SDL\bin;C:\SDL\include;C:\SDL\lib" 
> cabal install SDL --extra-include-dirs="C:\SDL\include" --extra-lib-dirs="C:\SDL\lib" 

只要爲配置腳本安裝了Cygwin,就可以工作。不過,我寫了一個小小的測試腳本:

import Graphics.UI.SDL as SDL 
import Control.Monad (void) 
import Control.Exception (bracket_) 

main = bracket_ (SDL.init [InitEverything]) quit $ do 
    screen <- setVideoMode 800 600 0 [] 
    SDL.flip screen 
    void $ waitEvent 

嘗試這個現在給了我此錯誤消息:

*Main> :main 
Loading package SDL-0.6.4 ... <interactive>: mingw32: Cannot find specified module. 
can't load .so/.DLL for: mingw32.dll (addDLL: could not load DLL) 

現在,我一直在尋找mingw32.dll,但我找不到它在我的電腦上,儘管我已經安裝了MinGW32。有沒有人在這裏有過任何經驗?使用SDL-0.6.4GHC 7.4.2,從Haskell Platform 2012.4.0.0。 Windows 7 64位。

ADDITION:我現在也嘗試過A Haskell Adventure In Windows的推薦方式,而且結果也是一樣的。

回答

1

它可能是一個64比32位的問題。嘗試.dll文件複製到:

  • Windows的64位版本:複製到C:\ WINDOWS \ SysWow64資料
  • 32位版本的Windows:複製到C:\ Windows \ System32下

That helped me with FTGL - see here

+0

但是我的系統上沒有任何'mingw32.dll'。谷歌搜索沒有帶來任何結果。我不認爲一個'mingw32.dll'存在。 – Lanbo

+0

@LambdaDusk,你是否安裝了mingw,msys或msysgit?如果是的話,他們可能會干擾你的cygwin的構建設置 – sinelaw

+0

@LambdaDusk實際上現在我只注意到你正在使用的指令是基於sdl dev libs的mingw構建的。你應該刪除cygwin並安裝mingw,或者刪除基於mingw的sdl並安裝一個cygwin,或者自己構建它(http://www.libsdl.org/extras/win32/cygwin/README.txt) – sinelaw

1

我用MSYS/MinGW來構建,並且我遇到了完全相同的問題。擺弄後我發現國旗-lmingw32(在文件sdl-config中)正在使用,這似乎暗示mingw32.dll。我簡單地刪除這個標記,並且一切正常。