0

我试图让 lua 5.1 执行一行,这只是对我的一个 c++ 函数的调用"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);

任何帮助表示赞赏。

4

1 回答 1

3

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

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

extern "C" int Assail(lua_State *L)
{
    // code here
}
于 2013-01-19T16:48:31.740 回答