一、起因

由于准备把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. ubuntu adb 安装

    ubuntu 下adb 安装,其实就是下载一个adb,然后给它赋予可执行权限,最后在环境变量里添加一下罢了.具体如下 1.下载adb 这个工具其实是在sdk工具包里面的platform-tools文件 ...

  2. vue-cli 搭建

    一.安装vue-cli 安装vue-cli的前提是你已经安装了npm,安装npm你可以直接下载node的安装包进行安装.你可以在命令行工具里输入npm -v  检测你是否安装了npm和版本情况.出现版 ...

  3. Android ijkplayer详解使用教程

    1.认识ijkplayer 最近公司准备开发一款视频播放及直播的应用,找了许多开源的框架,大部分都是基于ffmpeg开发的.最开始准备用Vitamio框架开发的,相关的文章也比较丰富,结果对于非个人移 ...

  4. android 移植ffmpeg后so库的使用

    今天折腾了一天,可算是有所收获,成功的用jni调用了libffmpeg中的一个方法-----avcodec_version(),至于avcodec_version()是干什么用的我不大清楚,应该是获取 ...

  5. .Net 开源控件 NPlot使用小结

    NPlot是一款非常难得的.Net平台下的图表控件,能做各种曲线图,柱状图,饼图,散点图,股票图等,而且它免费又开源,使用起来也非常符合程序员的习惯.授权方式为BSD许可证. 下载链接: http:/ ...

  6. Android模拟、实现、触发系统按键事件的方法

     Android模拟.实现.触发系统按键事件的方法 /** * 模拟系统按键. * * @param keyCode */ public static void onKeyEvent(final ...

  7. BZOJ 1027 JSOI2007 合金 计算几何+Floyd

    题目大意:给定一些合金,选择最少的合金,使这些合金能够按比例合成要求的合金 首先这题的想法特别奇异 看这题干怎么会想到计算几何 并且计算几何又怎么会跟Floyd挂边 好强大 首先因为a+b+c=1 所 ...

  8. Logstash之Logstash inputs(file和redis插件)、Logstash outputs(elasticsearch 和redis插件)和Filter plugins

     前期博客 Logstash安装和设置(图文详解)(多节点的ELK集群安装在一个节点就好) Filebeat啊,根据input来监控数据,根据output来使用数据!!! 请移步, Filebeat之 ...

  9. 洛谷P2147 [SDOI2008]Cave 洞穴勘测

    题目描述 辉辉热衷于洞穴勘测. 某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好两个洞穴.假 ...

  10. golang中new和make区别

    golang 中有两个内存分配机制 :new和make,二者有明显区别. new:用来初始化一个对象,并且返回该对象的首地址.其自身是一个指针.可用于初始化任何类型 make:返回一个初始化的实例,返 ...