作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 HsLua 作为库时遇到一些问题。 Lua 作为独立版本编译得很好。这个版本在我的 Linux 机器上运行没有问题。这是我看到的链接错误。
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,我已将其添加到项目的主 header 中,并且还在 cabal 文件中指定了它。让我觉得这是在找错树。
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'
最佳答案
嘿,我在 Windows 上遇到了完全相同的问题,对我有用的是将以下内容添加到 cabal 文件中
if os(windows)
CC-options: "-D__NO_ISOCEXT"
这使得 gcc 不使用特殊的 __strtod,而只是使用普通的。
关于haskell - 在 Windows 上使用 HsLua 出现链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907922/
我在使用 HsLua 作为库时遇到一些问题。 Lua 作为独立版本编译得很好。这个版本在我的 Linux 机器上运行没有问题。这是我看到的链接错误。 GHCi, version 7.4.1: http
我是一名优秀的程序员,十分优秀!