一、起因

由于准备把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不同模块调用的更多相关文章

  1. lua对模块接口扩展的一种方法

    module lua中模块的实现,对于使用者来说就是一个库,引用此库后,可以调用库中实现的任意函数. 使用库,可以将一类功能相关的接口做封装,并提供开放接口. 参考: http://blog.codi ...

  2. tengine lua 开源一 调用内部接口高效发送文件

    tengine  lua 开源一 调用内部接口高效发送文件 开源自己封装的sendfile 模块,可以高效的通过lua发送文件 源码地址:https://github.com/weinyzhou/Lu ...

  3. Lua中模块初识

    定义了两个文件: Module.lua 和 main.lua 其中,模块的概念,使得Lua工程有了程序主入口的概念,其中main.lua就是用来充当程序主入口的. 工程截图如下: Module.lua ...

  4. 【Lua】模块与包

    定义:         从用户观点来看,一个模块就是一个程序库,可以通过require来加载(require用于使用模块,module用于创建模块),然后便得到了一个全局变量,表示一个table,这个 ...

  5. lua 13 模块(类似class)与包

    转自: http://www.runoob.com/lua/lua-modules-packages.html 模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把 ...

  6. C程序与Lua脚本相互调用

    Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows ...

  7. node基础04:模块调用

    1.模块调用 node遵循AMD规范 //server.js var http = require("http"); var Teacher = require("./t ...

  8. ThinkPHP实现跨模块调用操作方法概述

    ThinkPHP实现跨模块调用操作方法概述 投稿:shichen2014 字体:[增加 减小] 类型:转载   使用 $this 可以调用当前模块内的方法,但是很多情况下经常会在当前模块中调用其他模块 ...

  9. Cortex-M3动态加载三(模块调用系统函数)

    在我的arm动态加载实验中需要解决一个模块调用系统函数的问题,可以使用以下的一个方法.将系统函数固定在某一段地址空间,然后导出这一块的符号表到符号文件中,要记载的模块link的时候使用这个符号表文件, ...

随机推荐

  1. 关于EM的理解

    任意浏览器的默认字体高度16px(16像素). 所有未经调整的浏览器都符合: 1em=16px.那么12px=0.75em,10px=0.625em.为了简化font-size的换算,需要在css中的 ...

  2. 【基础篇】点击Button按钮更换图片

    我们在开发的过程中,往往为了美化界面的需要,会修改按钮的默认外观,而因为Android中的按钮有三种状态—默认,被点击,被选中.所以,如果要改变按钮的外观,需要对这三种情况都做出修改,也许在以往,我们 ...

  3. windows下go语言环境

    1  liteIDE ,随便装哪儿都行 2  GO语言包 安装  ,我安装到了 c:\go  (顺便给个地址下载地址  https://golang.org/dl/  ) 3  GCC编译器 安装,同 ...

  4. wget 指令学习之递归抓取文档技巧

    在线上阅读文档的时候,有没有想将它抓取到本地,以备没有网的时候阅读只需? 先上指令: $ wget --user-agent="Mozilla/5.0 (X11; Linux x86_64) ...

  5. shell项目-分发系统-构建文件分发系统

    shell项目-分发系统-构建文件分发系统 需求背景对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用的机器肯定也是好多台,少则几台,多则几十甚至上百台.所以,自动同步文件是至关重要的. 实 ...

  6. 小米开源文件管理器MiCodeFileExplorer-源码研究(1)-2个模型Model

    上篇说到,把小米的Java代码整理成了5个包,其中1个是net.micode.fileexplorer.model.这个包就2个模型类,最基本了,FileInfo和FavoriteItem. pack ...

  7. Prism 框架基础架构

    概要 Prism提供指导,帮助您更轻松地设计和构建,灵活且易于维护的客户端业务应用程序,这些应用程序可在Windows运行时,Windows Presentation Foundation(WPF)桌 ...

  8. [Angular] How to get Store state in ngrx Effect

    For example, what you want to do is navgiate from current item to next or previous item. In your com ...

  9. ubuntu mysql 无法启动 简单排查

    自己的站点非常久没有去上了,想打开发现竟然打不开了.所以就找了一系列的原因. vps不行了 dns解析出问题了 域名出问题了 简单排查之后,我的vps服务商用的是 ***(bandwagonhost) ...

  10. softInputMode- 软件盘监听事件

    软件盘的监听事件,如下 private final OnKeyListener mSubjectKeyListener = new OnKeyListener() { @Override public ...