我正在寻找一种方法,能够在我的c代码中读取lua的主函数。
我还在寻找一种方法将C函数传递给lua
在我的示例代码中,LoadTBL
是来自C代码的函数
TBL =
{
{ Init, 0, 15, 00 },
{ End, 1, 16, 00 }
}
function main()
for key, value in pairs(TBL) do
result, msg = LoadTBL(value[1], value[2], value[3]);
if( not result ) then return false, msg;
end
end
return true, "success";
end
C代码:
int LoadTBL (int val1, int val2, int val3) {
....
return 0;
}
void read_test(void) {
lua_State *L;
L = luaL_newstate();
luaL_openlibs(L);
if (luaL_loadfile(L, "test.lua") || lua_pcall(L, 0, 0, 0))
{
printf("Error 'test.lua'\n");
return;
}
lua_close(L);
printf("Read complete.\n");
}
其思想是创建可以与C代码交互的luas脚本
1条答案
按热度按时间qyswt5oh1#
您将需要花更多的时间阅读有关Lua C API的内容。
下面是一个C程序的例子,或者叫 host,它创建一个Lua状态,注册一个全局函数,并执行一个Lua文件。一旦文件执行完毕,宿主程序就获得全局Lua值
main
,并尝试调用它。如果成功,宿主程序就从堆栈中读取返回值,并打印它们。注意C函数是如何定义为
lua_CFunction
的,以及如何与Lua堆栈交互的。我不确定您期望这个
LoadTBL
函数做什么,因此出于演示的目的,下面这个函数检查它的所有参数是否都是整数,并且可以被整除。main.c
:test.lua
: