Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
lua不做字符串 我试图让Lua 5.1执行一条线,这只是对我的C++函数的一个调用:代码>攻击” >我不明白为什么它不能工作,有人指出错误吗?_C++_Lua - Fatal编程技术网

lua不做字符串 我试图让Lua 5.1执行一条线,这只是对我的C++函数的一个调用:代码>攻击” >我不明白为什么它不能工作,有人指出错误吗?

lua不做字符串 我试图让Lua 5.1执行一条线,这只是对我的C++函数的一个调用:代码>攻击” >我不明白为什么它不能工作,有人指出错误吗?,c++,lua,C++,Lua,这是攻击功能: static int Assail(lua_State *L) { cout << "test" << endl; return 1; } 任何帮助都是值得赞赏的。 < P>因为你在C++中写这个名字,名字Mangle被应用到函数中,所以它在最终的可执行文件/库中有一个与Lua预期不同的特殊名称。您可以通过使用extern关键字将其链接更改为C来解决此问题: extern "C" int Assail(lua_State *L); ex

这是攻击功能:

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

任何帮助都是值得赞赏的。

< P>因为你在C++中写这个名字,名字Mangle被应用到函数中,所以它在最终的可执行文件/库中有一个与Lua预期不同的特殊名称。您可以通过使用
extern
关键字将其链接更改为C来解决此问题:

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

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

因为你在C++中写这个名字,名字Mangle被应用到函数中,所以它在最终的可执行文件/库中有一个与Lua预期不同的特殊名称。您可以通过使用

extern
关键字将其链接更改为C来解决此问题:

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

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

@迪恩,不客气。当你能接受这个答案时,请接受它。@Dean不客气。当你能够接受这个答案时,请接受这个答案。出了什么问题?无论如何,请检查
luaL\u dostring
的返回代码。最后,请注意,
Assail
可能应该返回0,因为它不会将任何内容推送到堆栈上。要想获得惊喜,请尝试
s=Assail(10,20);打印
。出了什么问题?无论如何,请检查
luaL\u dostring
的返回代码。最后,请注意,
Assail
可能应该返回0,因为它不会将任何内容推送到堆栈上。要想获得惊喜,请尝试
s=Assail(10,20);打印