Luad 使用独立的 Lua

标签 lua d lua-api

编辑:这已被追踪到共享库、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

编辑2:我已经缩小了一点。在 luaopen_luad_test 中使用 new 会导致段错误。

最佳答案

一种可能性是您尚未设置 D 运行时并且 GC 未处于有效状态。

我从来没有使用过 luad(或没有提供主要功能的 D),所以我可能会离开基地。

关于Luad 使用独立的 Lua,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11136265/

相关文章:

c++ - 将另一个类的 C++ 静态函数绑定(bind)到 Lua

c - 删除使用 lua_newuserdata 分配的内存

string - D (Tango) 读取所有标准输入并将其分配给一个字符串

python - Lua/Python 中的持久套接字连接

arrays - std.algorithm.remove() 复制数组项?

datetime - 日期滚动在哪里有用?

c - 创建后 Lua c API 更改库

我可以同时初始化和使用两个 Lua 缓冲区吗?

c++ - 如何绑定(bind) C++ 公共(public)变量以在 lua 脚本中访问

c - 如何从 C 中读取 Torch 张量