Lua与c/c++交互

转载 2015年07月09日 17:54:31

先安装lua,安装完后会有个include目录和lib目录,编译c/c++的时候需要用到。

lua调用c/c++


static int average(lua_State* L)
{
int n = lua_gettop(L);
double sum=0;
int i = 0;
for(i=1;i<=n;i++)
{
if(!lua_isnumber(L,i))
{
lua_pushstring(L,"Incoorect argument to 'average'");
lua_error(L);
}
sum+=lua_tonumber(L,i);
}


lua_pushnumber(L,sum/n);
lua_pushnumber(L,sum);


return 2;




}


int _tmain(int argc, _TCHAR* argv[])
{
int nRet=0;
int nCount=0;
lua_State* L1=lua_open();
luaL_openlibs(L1);
lua_register(L1,"average",average);


nRet=luaL_dofile(L1,"E:/aoi_list/lua_call_c79/Debug/test.lua");
//lua_pcall(L1, 0, LUA_MULTRET, 0);
nCount = lua_gettop(L1);
cout<<"ncount is "<<nCount<<endl;
//lua_getglobal(L1,"avg");
cout<<"avg is:"<<lua_tointeger(L1,1)<<endl;
//lua_pop(L1,1);
//lua_getglobal(L1,"sum");
cout<<"sum is:"<<lua_tointeger(L1,2)<<endl;
lua_close(L1);
return 0;

}

avg,sum=average(10,20,30,40,50)
print("The average is",avg)
print("The sum is",sum)


c调用lua

#include <stdio.h>
#include <lua.hpp>


lua_State * L;
int luadd(int x,int y)
{
int sum=0;
lua_getglobal(L,"add");//压栈
lua_pushnumber(L,x);//实参入栈
lua_pushnumber(L,y);//实参入栈


lua_call(L,2,1);//进行调用,2个参数,x,y然后进行计算
sum=(int)lua_tonumber(L,-1);
lua_pop(L,1);


lua_getglobal(L,"z");
int z=lua_tonumber(L,-1);
lua_pop(L,1);
return sum;
}



int main()
{
int sum=0;
L=lua_open();
luaL_dofile(L,"E:/aoi_list/lua_call_c79/c_call_lua_79/add.lua");
sum=luadd(10,15);


printf("sum is %d",sum);
lua_close(L);
return 0;
}


function add(x,y)
return x+y+2
end


z=6


继续看

Lua与宿主语言(C/C++)交互原理

Lua语言可研究的东西真是多,各种机制原理:与宿主语言(下文均指C/C++)的交互、内存管理(垃圾回收)、虚拟机实现、协程、闭包、异常捕获机制等。如取其一进行研究,要吃透还是需要点时间和精力。相信只要...
  • wu554513392
  • wu554513392
  • 2017年03月06日 20:53
  • 533

C++与Lua交互的C API

1、C API的介绍 Lua是一种嵌入式的语言。即Lua不是一个单独运行的程序,而是一个可以链接到其他程序的库。通过C API就可以将Lua的功能合并入这些程序。与此同时,一个使用了Lua的程序可以...
  • u013517637
  • u013517637
  • 2017年02月14日 13:50
  • 340

Lua 与C交互

Lua和C之间的交互 (一)            Lua 调C函数   1.        什么样类型的函数可以被Lua调用   typedef int (*lua_CFunct...
  • sumoyu
  • sumoyu
  • 2008年06月27日 18:15
  • 9930

Lua和C++交互机制详解

一、Lua堆栈 要理解Lua和C++交互,首先要理解Lua堆栈。 简单来说,Lua和C/C++语言通信的主要方法是一个无处不在的虚拟栈。栈的特点是先进后出。 在Lua中,Lua堆栈就...
  • xiaoluoshan
  • xiaoluoshan
  • 2016年11月14日 09:19
  • 816

在C++使用LUA交互,LUA实现闭包,C++/LUA相互闭包

LUA可谓是配置文件神器,具体功能用过才知道,接近两年没用了抽了俩小时熟悉了下基本的用法。 包括C/LUA堆栈操作 函数相互调用 以及LUA的闭包 C++和LUA相互闭包 要学习LUA首先要理解LU...
  • yue7603835
  • yue7603835
  • 2014年12月05日 05:13
  • 1872

Lua与C/C++的交互4:往Lua中写入C/C++变量

在第二,三章中,我完成了用C/C++读取Lua文件。今天,我又有一个新的目标:将C/C++中变量设置到Lua文件(其实是设置到Lua全局变量表中,为了方便简单理解,我们看做是设置到Lua文件中)。 ...
  • peter_teng
  • peter_teng
  • 2012年11月13日 17:16
  • 3797

c++工程调用python语言与lua语言

Python实例浅谈之三Python与C/C++相互调用 Lua和C++交互详细总结
  • yangdashi888
  • yangdashi888
  • 2017年04月21日 17:44
  • 366

Lua C++交互机制

一、Lua与C++的交互机制——Lua堆栈1)交互机制Lua和C++ 的交互机制的基础在于Lua提供了一个虚拟栈,C++ 和Lua之间的所有类型的数据交换都通过这个栈完成 栈中每个元素都能保存任何类...
  • v_xchen_v
  • v_xchen_v
  • 2017年08月16日 16:13
  • 495

Lua与C++的交互

在VS2010环境下实现Lua与C++的交互。详细环境搭建和实例
  • lining0420
  • lining0420
  • 2017年06月02日 00:49
  • 100

Lua 与C/C++ 交互系列: Lua调用C/C++函数(1).

在学习Lua和C/C++过程中,在这个过程花费了不少时间。总是在几个地方卡住。Programming  In Lua 和Lua 5.1 Reference Manual  为主要学习资料。 但是Lu...
  • sunning9001
  • sunning9001
  • 2015年06月20日 11:45
  • 737
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Lua与c/c++交互
举报原因:
原因补充:

(最多只允许输入30个字)