lua不同模块调用
一、起因
由于准备把lua加入的系统中,还需把字符串解析json。下了个json的lua,目前还没有搞定。但是一个lua,调用其他lua文件模块,目前刚刚搞定。
暂作记录。
二、 模块调用测试
1. add.lua,测试文件,被调用文件,内容简单如下:
-- local print=print
print ("start add function")
-- module("add")
function sum(x,y)
print ("the result output:sum =",x,"+",y)
local x = x
local y = y
return x + y
end
-- sum()
-- --标识类名 创建一个类
complex = {sum = sum}
2. test.lua,此文件为vs2012 c++直接调用的测试lua文件文件。
local l_print = print
l_print('start test...') -- local _G = _G
-- package.loaded["add"] = nil
function use_sum()
t = require "add"
l_print(t)
l_print("require add is ok--") local requirecomplex = {}
requirecomplex = complex
local result = requirecomplex.sum(5,3)
-- local result = add.sum(5,2)
l_print(result)
l_print("--------good news :use add is ok! --------------")
return result
end
可以看出,require了add文件,并调用了其他的sum函数。
3. c++代码编写
// lua_test.cpp : 定义控制台应用程序的入口点。 #include <stdio.h>
#include <iostream>
#include <string> #define luac_c
#define LUA_CORE #include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
int luaAdd(int x, int y);
lua_State *L; int main(int argc, char *argv[])
{
int sum = 0;
L = luaL_newstate(); luaL_openlibs(L);
luaL_loadfile(L, "test.lua");
lua_pcall(L, 0, LUA_MULTRET, 0); lua_getglobal(L, "use_sum");
//lua_call(L, 0, 1);
lua_pcall(L, 0, LUA_MULTRET, 0);
int reuslt = (int)lua_tonumber(L,-1);
lua_pop(L, 1); lua_close(L); return 0;
} int luaAdd(int x, int y)
{
int sum = 0;
lua_getglobal(L, "add");
lua_pushnumber(L, x);
lua_pushnumber(L, y);
lua_call(L, 2, 1);
sum = (int)lua_tonumber(L, -1);
lua_pop(L, 1);
return sum;
}
本次测试使用的为lua5.2.3.lib的版本。因为lua版本不一样,有的函数名字都没有了。郁闷。
测试结果:
希望以后有机会多用用。看了其他的人blog,lua的效率还是很高的。因为都是栈处理过程。
希望高手指点啊! 我的json 转换还没有搞定。
免分资源文件路径:http://download.csdn.net/detail/cartzhang/7352313 lua调用免分工程vs2012
lua不同模块调用的更多相关文章
- lua对模块接口扩展的一种方法
module lua中模块的实现,对于使用者来说就是一个库,引用此库后,可以调用库中实现的任意函数. 使用库,可以将一类功能相关的接口做封装,并提供开放接口. 参考: http://blog.codi ...
- tengine lua 开源一 调用内部接口高效发送文件
tengine lua 开源一 调用内部接口高效发送文件 开源自己封装的sendfile 模块,可以高效的通过lua发送文件 源码地址:https://github.com/weinyzhou/Lu ...
- Lua中模块初识
定义了两个文件: Module.lua 和 main.lua 其中,模块的概念,使得Lua工程有了程序主入口的概念,其中main.lua就是用来充当程序主入口的. 工程截图如下: Module.lua ...
- 【Lua】模块与包
定义: 从用户观点来看,一个模块就是一个程序库,可以通过require来加载(require用于使用模块,module用于创建模块),然后便得到了一个全局变量,表示一个table,这个 ...
- lua 13 模块(类似class)与包
转自: http://www.runoob.com/lua/lua-modules-packages.html 模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把 ...
- C程序与Lua脚本相互调用
Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows ...
- node基础04:模块调用
1.模块调用 node遵循AMD规范 //server.js var http = require("http"); var Teacher = require("./t ...
- ThinkPHP实现跨模块调用操作方法概述
ThinkPHP实现跨模块调用操作方法概述 投稿:shichen2014 字体:[增加 减小] 类型:转载 使用 $this 可以调用当前模块内的方法,但是很多情况下经常会在当前模块中调用其他模块 ...
- Cortex-M3动态加载三(模块调用系统函数)
在我的arm动态加载实验中需要解决一个模块调用系统函数的问题,可以使用以下的一个方法.将系统函数固定在某一段地址空间,然后导出这一块的符号表到符号文件中,要记载的模块link的时候使用这个符号表文件, ...
随机推荐
- python-打开网页
最近一直想通过python来实现网页的操作.因为想把自己vimrc的配置直接通过脚本来实现.比较理想的情况下,就是通过一个脚本,把自己需要的一些资源直接从网上下载下来,然后再对下载的资源进行安装等操作 ...
- POJ 3170 线段树优化DP
题意: 思路: 先搞一个vector 存以T2结尾的结构体 (结构体里面有开始工作的时间和花费) f[i]表示取区间[M,i)的代价 易得f[i]=min(f[k]+w,f[i]);T1<=k ...
- 网络最大流算法—Dinic算法及优化
前置知识 网络最大流入门 前言 Dinic在信息学奥赛中是一种最常用的求网络最大流的算法. 它凭借着思路直观,代码难度小,性能优越等优势,深受广大oier青睐 思想 $Dinic$算法属于增广路算法. ...
- NewtonSoft对象转json时,把 NULL 转 "" , 过滤 NULL, DateTime 时间类型去除 T
IsoDateTimeConverter timeConverter = new IsoDateTimeConverter(); timeConverter.DateTimeFormat = &quo ...
- batch---系统不繁忙时执行任务
batch:不需要指定时间,自动在系统空闲的时候执行指定的任务 [root@xiaolizi ~]# batch at> echo 1234at> <EOT>job 5 at ...
- django框架初探
django框架初探 1.web框架介绍 web框架本质是一个socket服务端.每一个端口只能被一个程序监听. web程序分为两个部分: 服务器程序:对socket服务器封装,解析http请求,发送 ...
- 微信小程序从零开始开发步骤(八)引入框架WeUI
首先来看下WeUI的官方介绍: WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一.在微信小程序的开发过程中,涉及到的前端 ...
- 调用中行接口针对返回报文(xml形式)做相关处理
最近在对接中行银行接口,在获取返回报文的时候遇到一些问题,现在在这里做个总结 TIP: 在返回报文之前,要对前置机的URL请求,在这期间遇到一个坑,还是通过查看日志才发现问题 在填写转账信息的时候要求 ...
- c#操作ElasticSearch5详解
c#操作ElasticSearch详解 ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearc ...
- HTTP协议建立连接、通讯与关闭连接全过程
为解决服务器TimeWait多的问题,了解了一下TCP/IP协议的连接过程.以访问一静态页面为例,从建立连接到访问拿到数据,然后关闭的整个过程.使用EtherPeek截图如下: 图首为一次交互过程 ...