2012-08-10 65 views
3

我有一些使用HsLua作爲庫的問題。 Lua作爲一個獨立版本編譯得很好。而這個版本在我的Linux機器上運行沒有問題。這是我看到的鏈接錯誤。在Windows上使用HsLua鏈接錯誤

GHCi, version 7.4.1: http://www.haskell.org/ghc/ :? for help 
Loading package ghc-prim ... linking ... done. 
Loading package integer-gmp ... linking ... done. 
Loading package base ... linking ... done. 
Prelude> import Scripting.Lua as Lua 
Prelude Lua> l <- Lua.newstate 
Loading package hslua-0.3.4 ... linking ... <interactive>: C:\..\AppData\Roaming\cabal\hslua-0.3.4\ghc-7.4.1\HShslua-0.3.4.o: unknown symbol `___strtod' 
ghc.exe: unable to load package `hslua-0.3.4' 
Prelude Lua> 

我做了周圍的一些圖書館戳,發現通話中關於strtod,我想我可能已經接近,但顯然不夠緊密。

編輯

這可能會或可能不會幫助。我會發布cabal文件,我做了一些改變,比如添加os(windows)部分。

Name: hslua 
Version: 0.3.4 
... 
Extra-source-files: src/*.h 

Library 
    Build-depends: base==4.* 
    Exposed-modules: Scripting.Lua, Scripting.Lua.ConfigFile 
    Hs-source-dirs: src 
    C-sources: src/lapi.c, src/lauxlib.c, src/lbaselib.c, src/lcode.c, 
      src/ldblib.c, src/ldebug.c, src/ldo.c, src/ldump.c, src/lfunc.c, 
      src/lgc.c, src/linit.c, src/liolib.c, src/llex.c, src/lmathlib.c, 
      src/lmem.c, src/loadlib.c, src/lobject.c, src/lopcodes.c, 
      src/loslib.c, src/lparser.c, src/lstate.c, src/lstring.c, 
      src/lstrlib.c, src/ltable.c, src/ltablib.c, src/ltm.c, 
      src/lundump.c, src/lvm.c, src/lzio.c, src/ntrljmp.c 
    Include-dirs: src 
    ghc-options: -Wall 
    extensions: ForeignFunctionInterface 


    if os(linux) 
    CC-Options: "-DLUA_USE_LINUX" 

    if os(darwin) 
    CC-Options: "-DLUA_USE_MACOSX" 

    if os(freebsd) 
    CC-Options: "-DLUA_USE_POSIX" 

    if os(windows) 
    CC-Options: "-DLUA_BUILD_AS_DLL" 
    includes: stdlib.h 

我嘗試了幾種不同的方法來獲得該項目的STDLIB,我已經在該項目主標題添加它,我也是在小集團文件中指定它。讓我覺得這是在吠叫錯誤的樹。

EDIT 2

嗯,我沒有去過能把這個尚未建成win32上。我試圖做的其他一些事情對我來說不起作用,以防其他人遇到同樣的問題。

我將所有構建的對象文件鏈接到一個靜態存檔中,並得到與上面相同的錯誤。我也嘗試過使用一個構建DLL,並且我得到了一個不同的錯誤,但我不確定它是前進還是後退。

C:\..\hslua-0.3.4>ghci liblua.dll -package hslua 
GHCi, version 7.4.1: http://www.haskell.org/ghc/ :? for help 
Loading package ghc-prim ... linking ... done. 
Loading package integer-gmp ... linking ... done. 
Loading package base ... linking ... done. 
Loading package hslua-0.3.4 ... linking ... ghc.exe: C:\..\hslua-0.3.4\ghc-7.4.1\HShslua-0.3.4.o: unknown symbol `_lua_close' 
ghc.exe: unable to load package `hslua-0.3.4' 

回答

3

嘿,我用同樣的事情在Windows掙扎,什麼工作對我來說是添加以下的小集團文件

if os(windows) 
    CC-options:  "-D__NO_ISOCEXT" 

,使得GCC不使用特殊__strtod而是僅僅是正常的。

+0

你的環境是什麼樣的?我絕對沒有像以前一樣的錯誤,但是我在ntrljmp.o中有一個未知的符號錯誤。你是否與靜態或共享庫鏈接? – M15K 2013-12-10 15:20:16