我试图让lua 5.1执行一行只是对我的c ++函数之一的调用"Assail"我不明白为什么它不起作用,有人可以指出错误吗?

这是Assail函数:

static int Assail(lua_State *L)
{
    cout << "test" << endl;
    return 1;
}


我试图这样呼叫do_string

L = lua_open();
luaL_openlibs(L);
lua_register(L, "Assail", Assail);
luaL_dostring(L, "s = Assail()");
lua_close(L);


任何帮助表示赞赏。

最佳答案

由于您使用C ++编写此代码,因此名称改写应用于该函数,因此它将在最终的可执行文件/库中具有一个特殊名称,该名称与Lua期望的名称不同。您可以通过使用extern关键字将其链接更改为C来解决此问题:

extern "C" int Assail(lua_State *L);

extern "C" int Assail(lua_State *L)
{
    // code here
}

10-07 12:45