用C++ Lua函数返回字符串
是否可以通过C++向Lua中添加一个返回字符串的函数? -edit- 好的,这段代码不会工作。任何帮助?用C++ Lua函数返回字符串
int flua_getinput(lua_State *L){
if(lua_isstring(L,1)){
cout << lua_tostring(L,1);
cin >> input;
cout << "\n";
lua_pushstring(L,input);
}else{
cin >> input;
cout << "\n";
lua_pushstring(L,input);
}
return 1;
}
Registering Function:
lua_register(L,"getinput",flua_getinput);
最简单的方法是使用luabind。它会自动检测和处理std :: string,这样你就可以简单地使用std :: string f()这样的函数,并将其绑定到lua,并在lua脚本调用它时自动转换为本地lua字符串。
如果您收到错误attempt to call global 'getinput' (a nil value)
那么问题是lua_register调用没有被击中。 getinput
函数必须通过调用注册函数来加载,或者如果它位于库中,则使用require
。
你想要做这样的事吗?
int lua_input(lua_State* L) {
string input;
cin >> input;
lua_pushstring(L, input.c_str());
return 1;
}
int main() {
lua_State* L=lua_open();
luaL_openlibs(L);
lua_register(L,"input",lua_input);
luaL_loadstring(L, "for i=1,4 do print('you typed '..input()); end");
lua_pcall(L, 0, 0, 0);
}
+1 OP需要我认为完整的代码。到OP:如果你采取这个,你**必须**也总是检查每个调用loadstring或pcall。最后使用lua_close。 – u0b34a0f6ae 2010-06-26 00:01:36
@kaizer - 你是对的。我只是尽量保持简单。 – 2010-06-26 19:13:20
是的,这是可能的。如果你想要更多的答案,你必须提供更多的上下文:你尝试过什么,为什么它看起来没有工作? – 2010-06-25 01:38:19
我不能只是得到一个如何去做的例子吗?我只是想学习C++和Lua。我不知道该从哪开始。 – Someguynamedpie 2010-06-25 01:44:58
Lua错误: lua:[字符串“init.lua”]:1:尝试调用全局'getinput'(一个零值) – Someguynamedpie 2010-06-25 02:06:32