• 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


  • 相关阅读:
    【代码笔记】iOS-书架页面
    iOS-@inerface的11条规范写法
    (转)iOS-蓝牙学习资源博文收集
    iOS App启动图不显示的解决办法.
    理解点击屏幕的事件响应--->对- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event方法的理解
    理解点击屏幕的事件响应--->对UIView的hitTest: withEvent: 方法的理解
    iOS GCD中级篇
    iOS开发UI篇—自定义layer
    iOS开发UI篇—CALayer
    iOS-绘制图层-CALayer的属性
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461981.html
Copyright © 2020-2023  润新知