这是 lua-tbl.c
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#include <stdio.h>
static int lecho (lua_State *L) {
const char* str = lua_tostring(L, -1);
fprintf(stdout, "%s\n", str);
return 0;
}
static const luaL_Reg l[] = {// 导出给lua使用数组
{"echo", lecho},
{NULL, NULL},
};
int luaopen_tbl_c(lua_State *L) { // local tbl = require "tbl.c"
// 创建一张新的表,并预分配足够保存下数组 l 内容的空间
luaL_newlib(L, l);
return 1;
}
下面是lua代码:
package.cpath = "./?.so" --c库的路径
local so = require "tbl.c" -- 这里xxx.c 对应 xxx.so 动态库
so.echo("hello world") -- 新的虚拟栈
so.echo("hello world1")-- 新的虚拟栈
so.echo("hello world2")-- 新的虚拟栈
现在问题是: lua-tbl.c 里面要添加vector的c++代码,需要编译为c++, 而不是c, 该怎么处理