【发布时间】:2013-08-24 12:15:32
【问题描述】:
我正在尝试在我的应用程序中绑定 Lua,现在我尝试测试如何将 Lua 绑定到 C++ 中。我的问题很奇怪,因为我想在开始时从脚本调用函数main(),在luaL_loadfile 之后。我的代码:
#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include "lua.hpp"
#include "lauxlib.h"
#include "lualib.h"
using namespace std;
int main(int argc, char **argv) {
lua_State* lua = luaL_newstate();
luaL_openlibs(lua);
if (luaL_loadfile(lua, "test.lua") != 0) {
std::cout << lua_tostring(lua, -1) << "\n";
lua_pop(lua, 1);
return 1;
}
lua_getfield(lua, LUA_REGISTRYINDEX, "main");
if (lua_pcall(lua, 0, 1, 0) != 0) {
printf("Error running function 'main': %s\n", lua_tostring(lua, -1));
return 1;
}
lua_close(lua);
return 0;
}
我的输出是:
错误运行函数'main':尝试调用一个零值
【问题讨论】:
-
您尝试做的事情完全没有意义。
main由 C/C++ 运行时库调用,作为程序的入口点。为什么要从 lua 脚本再次调用它?? -
为什么你会假设Lua registry 在“main”键下会有一些东西?你了解 Lua 运行时是什么(和不是)吗?