C++调用Lua代码
2012-10-24 15:22
525 查看
这里是指linux下的调用。C与C++调用Lua略有不同,体现在:
1.头文件包含的方法
C中直接include
c++中要加extern "C"
2.编译选项的不同
gcc -o xxx xxx.c -llua -ldl -lm
g++ -o xxx xxx.cpp -llua -ldl
下面是一个简单的C++调用Lua代码方法示例
lua代码(文件名为luafun.lua)
C++代码,这里注释部分说明了一些可替代的调用
而实际上,直接这样用太过繁琐,因为要为每个lua函数单独写参数列表等内容,所以有不少人对此做了一些封装,可参考:http://blog.csdn.net/nightfallrove/article/details/5729636。另外g++编译的时候注意编译选项。
1.头文件包含的方法
C中直接include
#include <lua.h> #include <lualib.h> #include <lauxlib.h>
c++中要加extern "C"
extern "C" { #include <lua.h> #include <lualib.h> #include <lauxlib.h> }
2.编译选项的不同
gcc -o xxx xxx.c -llua -ldl -lm
g++ -o xxx xxx.cpp -llua -ldl
下面是一个简单的C++调用Lua代码方法示例
lua代码(文件名为luafun.lua)
function add(x) print('luafun,x=',x) end
C++代码,这里注释部分说明了一些可替代的调用
#include<iostream> using namespace std; extern "C" { #include"lua.h" #include"lauxlib.h" #include"lualib.h" } #define my_lua_dofile(L, filename) (luaL_loadfile((L), (filename)) || lua_pcall((L), 0, LUA_MULTRET, 0)) lua_State *GlobalL; int main() { GlobalL = luaL_newstate(); int x = 10; lua_gc(GlobalL, LUA_GCSTOP, 0); luaL_openlibs(GlobalL); lua_gc(GlobalL, LUA_GCRESTART, 0); //luaL_dofile(GlobalL, "luafun.lua");//执行lua文件 int loaderr = luaL_loadfile(GlobalL, "luafun.lua"); cout<<"loaderr="<<loaderr<<endl; lua_pcall(GlobalL, 0, LUA_MULTRET, 0); //my_lua_dofile(GlobalL, "luafun.lua");//代替上面三行 lua_getfield(GlobalL, LUA_GLOBALSINDEX, "add"); //lua_getglobal(GlobalL, "add");//代替上面一行 lua_pushnumber(GlobalL, x);//参数 int callerr = lua_pcall(GlobalL, 1, 0, 0); cout<<"callerr="<<callerr<<endl; cout<<lua_tostring(GlobalL, -1)<<endl; lua_close(GlobalL); }
而实际上,直接这样用太过繁琐,因为要为每个lua函数单独写参数列表等内容,所以有不少人对此做了一些封装,可参考:http://blog.csdn.net/nightfallrove/article/details/5729636。另外g++编译的时候注意编译选项。
相关文章推荐
- C++ 和 lua代码互相调用
- C++调用Lua编程环境搭建及测试代码示例
- lua同c++的交互之在c++中调用lua代码
- lua调用c/c++代码
- C++用LuaIntf调用Lua代码示例
- C++用LuaIntf调用Lua代码示例
- (如何在C++代码中调用Lua脚本的函数?)
- cocos2d-x lua c++ 相互调用代码中直接调用注册
- 如何在cocos2d c++代码中调用lua以及探究
- D'Fusion中lua调用c++生成的dll库,并且lua调用c++代码(遍历文件夹中整个目录)
- cocos2d-x lua c++ 相互调用代码中直接调用注册
- C++调用Lua编程环境搭建及测试代码示例
- C++调用Lua编程环境搭建及测试代码示例
- C++调用Lua编程环境搭建及测试代码示例
- DFusion中lua调用c++生成的dll库,并且lua调用c++代码(遍历文件夹中整个目录)
- Lua代码解析-写给C和C++开发人员
- 最简单的java调用C/C++代码的步骤
- Lua与C/C++的交互5:C/C++调用Lua函数
- C/C++调用lua脚本函数
- C代码中如何调用C++ C++中如何调用C