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