lua与c互相调用二
*********************************************************/
#include <iostream>
using namespace std;
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
{
int n=lua_gettop(L);
double sum=0;
for (int i=0;i<=n;i++)
{
sum+=lua_tonumber(L,i);
}
lua_pushnumber(L,sum/n);
lua_pushnumber(L,sum);
lua_pushnumber(L,n);
/*标识函数有几个返回值*/
return 3;
}
{
/* 初始化Lua */
L=luaL_newstate();
lua_status(L);
luaL_openlibs(L);
lua_register(L,"average",average);
luaL_dofile(L, "main.lua");
lua_getglobal(L,"str");
char* str= (char*)lua_tostring(L,-1);
/* 清除Lua */
lua_close(L);
system("pause");
}
/********************************************************
lua与c互相调用一
*********************************************************/
#include <stdio.h>
#include <iostream>
using namespace std;
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#pragma comment(lib,"lua.lib")
lua_State* L;
int average(lua_State *L)
{
int n=lua_gettop(L);
double sum=0;
for (int i=0;i<=n;i++)
{
sum+=lua_tonumber(L,i);
}
lua_pushnumber(L,sum/n);
lua_pushnumber(L,sum);
lua_pushnumber(L,n);
/*标识函数有几个返回值*/
return 3;
}
int main ( int argc, char *argv[] )
{
/* 初始化Lua */
L=luaL_newstate();
lua_status(L);
/* 载入Lua基本库 */
luaL_openlibs(L);
char buffer[256];
while (fgets(buffer,sizeof(buffer),stdin)!=NULL)
{
int errors = luaL_loadbuffer(L,buffer,strlen(buffer),"line")||lua_pcall
(L,0,0,0);
if (errors)
{
fprintf(stderr,"%s",lua_tostring(L,-1));
lua_pop(L,1);
}
}
lua_pushnil(L);
/* 清除Lua */
lua_close(L);
/* 暂停 */
system("pause");
return 0;
}
以下是main.lua的代码
--Lib = {}
--Lib.foo = function (x,y) return x + y end
--Lib.goo = function (x,y) return x - y end
--a=io.read("*number")
--b=io.read("*number")
--print(Lib.foo(a,b),Lib.goo(a,b))
--[[
这是一个简单的求平均数的函数调用然后输入一段文字
用c++打印出来!
--]]
avg,sum,n = average(10,20,30,40,51)
print("平均数是",avg)
print("总数是",sum)
print("个数数是",n)
str = io.read();
大家有什么更好的东西欢迎交流!也许这是lua比较初级的东西,以后可能我会结合
msxml与lua及vc尝试着做一些好玩的东西,欢迎关注。