8、Lua中调用C++函数

无限制浏览:地址

    来往来往,有来有往才能叫做来往。既然C/C++和lua是好亲戚,那就会有来有往。之前,我们一直在讨论在C/C++中如何使用Lua提供的变量和函数。从这篇文章开始,咱们来讨论一下如何在Lua中使用C/C++提供的变量、函数甚至类。
    当然,我们还是假设lua是嵌入C/C++程序里面的。所以,使用lua依然是为了扩展C/C++。这个目的一定要先明确了。接下来的事情就比较容易了。
    既然,想让lua调用C/C++的函数。首先,肯定是让lua知道C/C++函数的存在,然后才能调用。再次明确一下我们使用lua是为了扩展C/C++的。就像一个家庭一样,C/C++作为一家之长,当然也就需要主动一点。废话少说,代码说话。

LuaCallCFun.lua

local x=123
local y=456
print("lua:    x(" .. x .. ") + y(" .. y .. ") = " .. cf_Add(x, y))

LuaCallCFun.cpp

 #include <lua.hpp>

int cf_Add(lua_State *L)
{
    int x = lua_tonumber(L, 1);
    int y = lua_tonumber(L, 2);
    int ret = x + y;
    printf("cf_Add: x(%d) + y(%d) = %d\n", x, y, ret);
    lua_pushnumber(L, ret);
    return 1;
}

int main(int argc, char * argv[])
{
    lua_State *L = lua_open();
    luaopen_base(L);    
    
    // 往lua中注册函数    
    lua_pushvalue(L, LUA_GLOBALSINDEX);
    lua_pushstring(L, "cf_Add");
    lua_pushcfunction(L, cf_Add);
    lua_rawset(L,-3);
    lua_pop(L,1);
    
    luaL_dofile(L, "LuaCallCFun.lua");    
    
    lua_close(L);
}

测试环境

类型
操作系统Ubuntu 10.10
lua5.1.4

运行结果

运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值