lua 与 c++ 函数互调

来源:互联网 发布:快3遗漏号码数据查询 编辑:程序博客网 时间:2024/06/06 20:23

首先配置一下 VS2010 

新建一个win32控制台应用程序LuaTest,属性->配置属性->VC++目录

可执行文件目录添加 E:\Tools\5.1;

包含目录 添加 E:\Tools\5.1\include;

库目录添加 E:\Tools\5.1\lib;

然后再链接器-》输入添加 lua51.lib;lua5.1.lib;

剩下编译运行就可以了

LuaTest.cpp

#include "stdafx.h"#include <iostream>using namespace std;#include <stdio.h>extern "C" {#include "lua.h"#include "lualib.h"#include "lauxlib.h"}lua_State *L;// lua 调 c++static int average(lua_State *L){int n = lua_gettop(L);double sum = 0;int i;for (i=1 ;i<= n; i++) {if(!lua_isnumber(L,i)){lua_pushstring(L,"Incorrect argument to 'average'");lua_error(L);}printf("%lf\n",lua_tonumber(L,i));sum += lua_tonumber(L,i);}lua_pushnumber(L,sum/n);lua_pushnumber(L,sum);return 2;}//c++ 调 luaint luaadd(int a,int b){int sum;lua_getglobal(L,"add");lua_pushnumber(L,a);lua_pushnumber(L,b);lua_call(L,2,3);sum = (int)(lua_tonumber(L,-1));lua_pop(L,1);return sum;}int main(int argc,char * argv[]){L = lua_open();luaL_openlibs(L);lua_register(L,"average",average);luaL_dofile(L,"test.lua");lua_getglobal(L,"avg");cout<<"avg is:"<<lua_tointeger(L,-1)<<endl;printf("the sum is %d",luaadd(10,15));lua_close(L);system("pause");return 0;}


test.lua

function add(a,b)avg,sum = average(10,20,30,40,50)print("The average is:",avg)print("The sum is:",sum)return a,b,a+bend



0 0
原创粉丝点击