在Windows上使用HsLua时出现链接错误
2012-8-14 14:50:34
收藏:0
阅读:121
评论:1
我在使用 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 加入到项目中,我在项目的主标头中添加了它,我还在 Cabal 文件中指定了它,这让我认为我是对的。
编辑-2
好吧,我还没有能在 win32 上构建它。我尝试做了一些其他的事情,但都没有成功,以防别人遇到同样的问题。
我将所有已构建的对象文件链接到一个静态档案中,我得到了与上面相同的错误。我还尝试使用构建 DLL,但是我得到了不同的错误,但我不确定它是否是进步还是退步。
C:\ .... \ hslua-0.3.4>ghci liblua.dll -package hslua
GHCi,版本7.4.1:http://www.haskell.org/ghc/ :?获取帮助
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:\ .... \ HShslua-0.3.4.o的未知符号 `_lua_close'
ghc.exe:无法加载软件包'hslua-0.3.4'
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
嘿,我在 Windows 上也遇到了同样的问题,下面适用于我,将以下内容添加到 cabal 文件中:
if os(windows) CC-options: "-D__NO_ISOCEXT"这使得 gcc 不使用特殊的 __strtod,而只使用普通的 strtod。