我试图让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
}