【发布时间】:2012-06-21 10:33:32
【问题描述】:
编辑:这已被归结为共享库、d 运行时和 os x 的一个更普遍的问题。见这里:Initializing the D runtime on OS X
我正在尝试从 Lua 独立解释器访问一个简单的 d 函数。
我看不到让 lua 实例识别 d 库的直接显而易见的方法,所以我尝试了这个 hack
import luad.all, luad.c.all;
extern (C) int luaopen_luad_test(lua_State* L) {
auto lua = new LuaState(L);
lua["addition"] = &addition;
return(0);
}
int addition(int a, int b)
{
return(a+b);
}
我知道当我调用 require("luad_test") 时,它会调用 luaopen_luad_test(lua_State* L) 让我可以访问解释器的 lua_State。但是,当我调用 require 时,我只会遇到段错误。
我是不是完全看错了?
编辑:我在 os x 上使用 lua 5.1.5,我已将 ";?.dylib" 添加到 package.cpath 以允许加载 .dylib 而不是 .so
edit2:我缩小了一点。在 luaopen_luad_test 中使用 new 会导致段错误。
【问题讨论】: