c/c++语言开发共享如何在Lua中使用C/C++提供的变量、函数甚至类

来往来往,有来有往才能叫做来往。既然c/c++和lua是好亲戚,那就会有来有往。之前,我们一直在讨论在c/c++中如何使用lua提供的变量和函数。从这篇文章开始,咱们来讨论一下如何在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     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) = %dn", 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
lua 5.1.4

运行结果

如何在Lua中使用C/C++提供的变量、函数甚至类

www.ctvol.com true Article c/c++语言开发共享如何在Lua中使用C/C++提供的变量、函数甚至类

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/606390.html

(0)
上一篇 2021年5月13日 下午10:07
下一篇 2021年5月13日 下午10:10

精彩推荐