从string_t调用Lua函数
Calling Lua function from string_t
我在.lua文件中声明和初始化了一些函数。然后,当我接收到信号时,我读取string_t变量,其中包含要从文件中调用的函数的名称。问题是我不知道如何将函数按其名称推入堆栈或调用它。
例如:test.lua
function iLoveVodka()
--some text
end
function iLoveFish()
--another text
end
C文件:
string_t a = "iLoveVodka()"
我怎么能从C/c++代码iLoveVodka()
调用函数只有它的名字?
下面是一些做两件事的示例代码:
- 加载test文件。
- 尝试调用函数
iLoveVodka()
,如果可以找到它。
你应该能够很容易地构建这个:
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[])
{
lua_State *l = luaL_newstate ();
luaL_openlibs (l);
int error = luaL_dofile (l, "test.lua");
if (error)
{
printf( "Error loading test.lua: %sn",luaL_checkstring (l, -1) );
exit(1);
}
/**
* Get the function and call it
*/
lua_getglobal(l, "iLoveVodka");
if ( lua_isnil(l,-1) )
{
printf("Failed to find global function iLoveVodkan" );
exit(1);
}
lua_pcall(l,0,0,0);
/**
* Cleanup.
*/
lua_close (l);
return 0;
}
可以这样编译:
gcc -O -o test `pkg-config --libs --cflags lua5.1` test.c
只要在test.lua
中定义iLoveVodka()
函数,就可以了。
相关文章:
- 使用 LuaBridge 或 Lua 将对象传递给 Lua 函数C++
- 将 Lua 函数块转换为 C 字符串
- 调用 lua 函数的地址为 C/C++?
- 如何在C++中获取lua函数作为参数,然后调用它
- C++-在没有自定义.lib文件的情况下从Lua C模块调用Lua函数
- 将带有字段的表作为参数从C++传递给 Lua 函数?
- 如何在C++中从Lua函数获取返回表?
- 从Qt/C++-App并行运行两个Lua函数
- C++ 和 Lua 函数之间的交互与 3D 矢量参数
- 如何获取从C++发送到Lua函数的表的更新值?
- 如何在LUA C API中分配全局LUA函数变量
- 尝试执行绕道附加,但无法将我的lua函数的数据类型转换为LPVOID
- 从c++调用lua函数时,如何使表和变量值保持不变
- 在C中存储对lua函数的引用
- Lua 函数不执行任何操作
- C++ - 调用 Lua 函数始终返回 0
- 从C++调用 lua 函数时"Error in error handling"
- 从C++中调用Lua函数
- 在 c++ 中调用 lua 函数(带有 require 'nn')
- 如何使用可变模板来制作一个通用的Lua函数包装器