luaplus和c++之间的代码交互

1.需求

最近在搞一个项目时需要在程序运行时进行其中环境的改变故采用luaplus作为动态引入,实现和c++代码之间的互调

2.解决

需要下载luaplus最新代码进行编译

3.代码

mymain.cpp
#include <iostream>
#include "LuaPlus.h"
using namespace std;
using namespace LuaPlus;

class MyTest
{
public:
    int sum(int x, int y) {return x + y;}
};

int LS_PrintNumber(LuaState * state)
{
    LuaStack args(state);
    int ncount = args.Count();
    cout<<ncount<<endl;

    for (int n = 1; n<= ncount; ++n)
        cout<<args[n].GetNumber()<<endl;
    return 0;
}

int main()
{
    LuaStateOwner state;
    MyTest test;
    //lua调用c++中的普通函数
    state->GetGlobals().Register("PrintNumber", LS_PrintNumber);

    //lua调用c++中的类函数
    state->GetGlobals().RegisterDirect("sum", test, &MyTest::sum);

    int iret = state->DoFile("test.lua");
    //c++调用lua中的变量
    int mytest = state->GetGlobal("health").GetInteger();
    cout<<mytest<<endl;
    //c++调用lua中的函数
    LuaFunction<float> Add = state->GetGlobal("Add");
    cout<<Add(12.34, 23.45)<<endl;

    cout<<state->GetGlobal("aa").GetInteger()<<endl;
    std::system("pause");
    return 0;
}
test.lua
--c++调用lua中定义的变量
health=200;

--c++调用lua中定义的函数
function Add(x,y)
return x+y
end

--lua调用c++中定义的类函数
--lua调用c++中定义的普通函数
PrintNumber(10, 20);

aa=sum(1000, 2000);

4.备注

1.在win7+vs2010+win32命令行下编译通过
2.完整代码http://download.csdn.net/detail/zhang_ruiqiang/9030679
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值