C++程序调用lua脚本并返回相应的值,和在lua中调用c++ 注册的函数和类型搞明白了。备份一下。
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#include
#include
void greet()
{ std::cout << "hello world!\n";
}
int add(int a,int b)
{
return a+b;
}
class User
{
private:
User():id(0){ }
~User(){}
static User* instance;
int id;
public:
static User& Instance(){
if(!instance)
{
instance = new User;
if(instance)return *instance;
}
return *instance;
}
int Id(){ return id;}
void setid(int _id){ id = _id;}
};
User* User::instance = NULL;
/////////////脚本函数///////////////
User& instance()
{
return User::Instance();
}
////////////////////////////
extern "C"
int init(lua_State* L)
{ using namespace luabind;
open(L);
lua_cpcall(L,luaopen_base,0);
module(L)
[
def("greet", &greet),
def("add",&add),
def("instance",&instance)
];
module(L)
[
class_("User")
.def("Id", &User::Id)
.def("setid", &User::setid)
];
return 0;
}
int main()
{
lua_State* L = luaL_newstate();
init(L);
int ret = luaL_dofile(L, "test2.lua");
if(ret!=0){
printf("执行LUA脚本文件出错:%s\n",lua_tostring(L,-1));
}
int res = luabind::call_function(L,"Int", 2, 23);
printf("执行LUA脚本文件:%u\n",res);
lua_close(L);
return 0;
}
编译命令 g++ lua2.cpp -o lua2 -I/usr/local/include -L/usr/local/lib -llua -lluabind
lua脚本如下
greet()
print(add(2,4))
user = instance()
user:setid(4)
print(user:Id())
function Int(a, b)
return a*b
end
更多详细 http://www.cppblog.com/liangairan/articles/71131.html
分享到:
相关推荐
LuaBind 是一个帮助你绑定C++和Lua的库.她有能力暴露 C++ 函数和类到 Lua . 她也有 能力支持函数式的定义一个Lua类,而且使之继承自C++或者Lua. Lua类可以覆写从 C++ 基类 继承来的虚函数. 她的目标平台是Lua 5.0 ,不...
按官方diff文件修改过的luabind代码,修正了在使用lua5.1时,编译luabind出现编译错误的兼容性问题: error C2065: \'LUA_NOREF\' : undeclared identifier
程序也必须使用和库一样的设定.可用的选项的介绍参见 Build options 章节. 如果你希望改变缺省的设置,推荐你通过修改命令行参数的方式来实现.(在Visual Studio 的工程设置项里面). 5 基本使用 为了使用LuaBind, ...
lua:通用的脚本功能,控制台界面通用的lua相关实现等。 OD:计划存放关于OD逆向分析的一些东西。 python:包括用python写的自动更新ida数据库信息的插件,其中python/ForFrame/PreBuild.py是用来帮助编译器生成assf...
用于lua 脚本测试,luabind,里面可以自己加脚本
luabind-0.9.1在windows下的示例代码,内部包含了lua,boost的代码,且已编译完成,下载后即可运行,也可以自己重新编译,可以随意修改代码
luabind is a library, inspired by and similar to Boost.Python, that helps you create bindings between C++ and Lua. It has the ability to expose functions and classes, written in C++, to Lua.
luabind-0.9.1在linux下的示例代码,内部包含了lua,boost的代码,且已编译完成,下载后即可运行,也可以自己重新编译,可以随意修改代码
BIN_LuaBind 是一个和 luabind、tolua 类似的库,提供了简洁的 C/C 到 lua 的绑定机制,但与之不同的是BIN_LuaBind 比他们更安全:lua 层不在直接依赖于 C/C 层指针,避免野指针引起宕机。除此之外,BIN_LuaBind 对 ...
luabind派生C++类及相关问题(csdn)————程序
导出c++类、函数、变量等到lua的实现代码,提供思路。类似luabind、tolua++,部分特性如继承导出等暂未实现。
示例LUA: function init(id) mylib.print_message("in init. got: " .. id) local announce_id = mylib.announce("henry") mylib.print_message("announce got " .. announce_id) end function shutdown() ...
luabind-0.9.1在windows下的示例代码,内部包含了lua,boost的代码,且已编译完成,下载后即可运行,也可以自己重新编译,可以随意修改代码
protoc-gen-luabind Google protobuf lua 端口,luabind 基础
lua库应用可以绑顶C和C++语言应用的结合功能,交互调用执行此功能
luabind源码包,支持c++与lua的交互;它可以处理继承和模板类
自已学lua和luabina的时候,写的测试例子,可供初学者使用
LuaBind 是一个帮助你绑定C++和Lua的库.她有能力暴露 C++ 函数和类到 Lua . 她也有 能力支持函数式的定义一个Lua类,而且使之继承自C++或者Lua. Lua类可以覆写从 C++ 基类 继承来的虚函数. 她的目标平台是Lua 5.0 ,不...
直接下载使用,已经编译好的lib文件 有需要的直接拿走,绝对可以使用,本人自己也在使用,lua5.14版本和luabind9.01版本
luabind-0.9.1.lib 使用VS2008,lua5.1.2,boost1.47.0编译好的luabind-0.9.1,由于是采用静态编译的LIB,文件比较大。使用方法也可参照我的CSDN的博客。