Lua5.2改动

lua 调用 C Lua中调用C函数(lua-5.2.3) 由sf0501创建,小路依依 最后一次修改2016-11-16 Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。 对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。 对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef in... 阅读详情
  1. 第三方cmodule,如使用luaL_register需要改为 luaL_newlib。如lfs库luaL_register (L, "lfs", fslib) 改为luaL_newlib(L,fslib);。
    这里本来第二个参数是表明,非nil是把所有接口放到一个全局变量table中,nil就是所有接口都是全局函数。现在是强制取消全局接口了。
  2. 所有第三方库没有gloable的函数了,所以使用时都要赋给一个表。如lfs, local lfs = require"lfs"。
  3. 以前thread, function, userdata可以有env。现在没有了。
  4. getfenv、setfenv没了,只能使用_ENV,不能完全替代。比如给不同func加env不行了,以前可以传入不同函数,用setfenv给他们加上相同env的。
    http://blog.codingnow.com/2011/12/lua_52_env.html
    模拟实现版本
    setfenv = setfenv or function(f, t)
         f = (type(f) == 'function' and f or debug.getinfo(f + 1, 'f').func)
         local name
         local up = 0
         repeat
             up = up + 1
             name = debug.getupvalue(f, up)
         until name == '_ENV' or name == nil
         if name then
             debug.upvaluejoin(f, up, function() return name end, 1)  -- use unique upvalue
             debug.setupvalue(f, up, t)
         end
    end
  5. userdata用lua_getuservalue代替lua_setfenv。
  6. local ss = "aa/bb/cc" ss:gsub('/', '%.')  5.1能运行,5.2必须把%去掉。
  7. table.maxn下个版本要去掉了
  8. lua_objlen ->lua_rawlen
  9. module (name [, ···]) deprecated,坏处1  坏处2:1.使用package.seeall会破坏模块内聚性,有可能随意访问或改变全局变量。2.直接把包以指定名字(可以AA.BB.CC的名字)加到了全局表。
    原来的
    module("mymodule")等同于:
    local modname = “mymodule”     – 定义模块名 
    local M = {}                               -- 定义用于返回的模块表  
    _G[modname] = M                      -- 将模块表加入到全局变量中  
    package.loaded[modname] = M    -- 将模块表加入到package.loaded中,防止多次加载  
    setfenv(1,M)                               -- 将模块表设置为函数的环境表,这使得模块中的所有操作是以在模块表中的,这样定义函数就直接定义在模块表中 
    新的方式:
    local base = _ENV
    local modname = {}
    local _ENV = modname
    ...
    return modname
  10. local socket = require("socket.core")
    module("socket")
    如luasocket这样的定义在5.1中,socket是 socket.core返回的table加上本module内定义的接口。
    5.2中设置了兼容,能用module,但是socket.core中的table直接被空table覆盖,不会暴露。
  11. #define LUA_GLOBALSINDEX    LUA_RIDX_GLOBALS
    #define luaL_reg           luaL_Reg
    #define luaL_putchar(B,c)   luaL_addchar(B,c)
    #define lua_open            luaL_newstate
  12. luaL_typerror没了,改为
    LUALIB_API int luaL_typerror (lua_State *L, int narg, const char *tname) {
      const char *msg = lua_pushfstring(L, "%s expected, got %s",
                                        tname, luaL_typename(L, narg));
      return luaL_argerror(L, narg, msg);
    }
  13. luaL_openlib(L, NULL, func, 0);   => luaL_setfuncs(L, func, 0);
原文地址:http://blog.youkuaiyun.com/lqk1985/article/details/7380679
LUA5.2版本中提供的位运算 Bitwise Operations This library provides bitwise operations. It provides all its functions inside the table bit32. all functions accept numeric arguments in the range (-2^51,+2^51); each argumen 阅读详情

相关推荐

Linux下构建Lua 5.2.0静态库指南

Lua是一种轻量级的脚本语言,广泛应用于嵌入式系统、游戏开发和快速原型开发等领域。本章节将带领读者初步了解Lua 5.2.0版本,这是2011年发布的稳定版本,至今仍被广泛使用。在第五章中,我们深入探讨了静态库编译的基础知识与配置方法。我们从静态库与动态库的区别谈起,进一步解释了编译静态库的基本概念。接着,我们详细介绍了如何选择合适的编译器选项以及如何设置特定标志,以确保Lua静态库的高质量编译。在后续章节中,我们将学习如何修改Makefile以及如何在实际应用中验证和应用静态库文件。

weixin_34779181的博客 1195

lua5.2 改动

第三方cmodule,如使用luaL_register需要改为 luaL_newlib。如lfs库luaL_register (L, "lfs", fslib) 改为luaL_newlib(L,fslib);。 这里本来第二个参数是表明,非nil是把所有接口放到一个全局变量table中,nil就是所有接口都是全局函数。现在是强制取消全局接口了。所有第三方库没有gloable的函数了,所以使用时都

~。~||| 1万+

告别偏移地址!用C# S7PLUS驱动读写西门子S7-1500符号地址(TIA Portal V17+环境配置)

本文详细介绍了如何在TIA Portal V17+环境中使用C# S7PLUS驱动读写西门子S7-1500 PLC的符号地址,告别传统的偏移地址方式。通过配置OpenSSL、集成S7PLUS驱动库,以及实战案例展示符号地址的读写方法,显著提升代码可读性和维护效率。文章还涵盖了环境准备、高级配置及常见问题解决方案,助力工业自动化开发者实现更高效的PLC通讯。

weixin_28720767的博客 315

lua5.3 批量注册c函数

cocos2d-x使用的lua版本号为5.1,使用的是luaL_register()函数来进行批量注册。下面说一下在5.3版本怎样批量注册函数。先以luaL_openlibs()函数为例。static const luaL_Reg loadedlibs[] = { {"_G", luaopen_base}, {LUA_LOADLIBNAME, luaopen_package},//pack...

bull521的博客 3286

RTC温度补偿:如何让时间分秒不差?

RTC(实时时钟)温度补偿技术通过"检测温度→计算误差→动态调整频率"的闭环机制,解决振荡器频率随温度变化导致的时间误差问题。核心步骤包括:1)高精度温度检测;2)基于温度-频率误差模型计算偏差;3)通过硬件(可编程电容/DAC)或软件方式调整振荡频率。该技术需突破温度检测精度、误差模型拟合、频率调整分辨率等关键点,根据不同应用场景(消费电子±5ppm至军工±0.1ppm)选择匹配方案。典型实现如STM32的分段线性补偿算法,可将工业级RTC精度提升至±2ppm以内。

上市公司前技术负责人,20 年软硬件深耕 + 百人研发团队管理经验,名校理工科背景加持。从技术攻坚到团队掌舵,沉淀海量项目实战与管理心得,专注分享软硬件干货、疑难问题解决方案,既是靠谱知识传播者,也盼链接优质项目共成长。 1228

飞常准小程序接口逆向分析:如何破解航班查询的签名机制

本文深度解析了飞常准小程序航班查询接口的安全机制,重点剖析了其基于MD5和参数排序的签名算法。通过逆向分析核心代码,详细阐述了签名生成流程,并提供了Python实现的签名生成器与调试技巧,为开发者理解与模拟此类接口调用提供了实战指南。

zz67890的博客 531

Lua调用c模块

一、lua调用c模块总结 1.c函数库成为lua的一个模块 主要做法:将包含c函数的代码生成库文件 linux下是.so windows下是.dll 同时拷贝到lua运行环境的bin下(由于我用的是LuaTool运行环境 所以放在bin下 程序运行默认从bin下找) 这样lua解析器才可以找到.dll文件 2.编写c模块 (1)先编写需要注册的c函...

小不点的博客 9886

山景BP10_128DBG开发板通过蓝牙连接手机放歌实验回顾

最近在学习上海山景公司的BP10_128DBG的开发板,因为网上关于BP10开发板的帖子也比较少,在学习的时候也没有太多的参考资料,基本上都是官方的历程。蓝牙放歌这个demo对我来说也比较复杂,特写下此博客进行记录、总结,大家有需要的可以参考。

weixin_56646002的博客 2019

lua - 使用luaL_register方法实现 lua调用c/c++(lua5.1及之前版本可用)

lua5.1之前可以使用luaL_register方法在c/c++中进行方法的批量注册。 直接整活。。。 Test_Tolua.cpp // Test_Tolua.cpp void Test_Tolua::init() { const luaL_reg functions[] = { { "UserID", UserID }, { "InitSDK...

汐客SeaKr的博客 4699

基于YOLOv8的农作物病虫害检测系统设计与实现

国内如中国农业大学的科研团队采用改进的Faster R-CNN模型对小麦病害进行检测,取得了较好的效果。农作物病虫害是影响农业生产的重要因素之一,每年因病虫害导致的农作物减产高达20%-40%。YOLO(You Only Look Once)系列算法作为目标检测领域的代表性模型,以其高效、准确的特点在众多领域得到广泛应用。YOLOv8作为该系列的最新版本,在精度和速度上都有显著提升,非常适合农作物病虫害检测这类需要实时处理的应用场景。然而,现有研究仍存在一些不足:一是模型复杂度高,难以部署到移动设备;

YOLO 794

【即插即用模块】注意力篇 | TGRS 2025 | MFA聚特征+HPDown保细节+HFF融层级,三大模块各司其职,性能翻倍!

本文介绍了MTMLNet网络中的三大核心模块:MFA(多阶段特征聚合)、HPDown(混合池化下采样)和HFF(分层特征融合)。MFA通过双尺度深度卷积和注意力机制增强特征提取能力;HPDown结合平均池化和最大池化,有效保留下采样过程中的特征信息;HFF采用三注意力机制实现自适应特征融合。这三个模块协同工作,在红外小目标检测与分割任务中取得了SOTA效果。实验表明,各模块在特征提取、信息保留和融合方面均优于传统方法,可灵活应用于各类视觉任务中。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 282

lua 5.2 的 _ENV

转自: lua 5.2 正式发布了,对于 lua 语言本身的修改,重中之重就是对 environment 这个概念的修改。 可以说, 5.1 以前的 environment 已经没有了。environment 对于制造一个安全的沙盒(或是实现 DSL)是一个很重要的语言特性,我以前很喜欢使用,但也很容易用错。这次的修改我认为是一个谨慎的决定,并使得 lua 语言更为精简和严谨了。 我

Adam040606的博客 1364

QGis软件 —— 9、QGis - 由点绘制热力图来模拟人流量(绘制点方式、excel导入数据方式)

QGis软件 —— 9、QGis - 由点绘制热力图来模拟人流量(绘制点方式、excel导入数据方式)

1469

lua支持中文--改法修正

看到网上各种转载修改源码使lua支持中文的,结果试了下发现测试出来有问题,如: >function 为而的() end stdin:1: '(' expected near ')' 这里就会报错,只好改下,就没问题了,如下改后的源码(改动之处已标明)。 #pragma once #include //////////////////////////

kugoo11v12的专栏 2633

UE5实现建筑剖切效果

UE5实现建筑剖切效果

专注GIS开发 8458

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

cocos2dx-lua结合cocosbuilder问题汇总

mac 10.9.1xcode 5.0.2cocos2dx 2.2.1cocosBuilder 3.0-alpha51、 每次脚本有改动,Xcode都要清理。2、Get data from file(.ccbi) failed!3、attempt to call field 'setPosition' (a nil value)定义: local MainScene =cla...

weixin_34146805的博客 149

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

lua-5.1 和 lua-5.2 之间的一些差异。

1. luaL_register 2 luaL_setfuncs lua5.1 之中有一个luaL_register,用于把luaL_Reg 数组中的所有函数注册到lua中。但在lua5.2中已经不支持这一函数了, lua5.2的手册中建议使用luaL_setfuncs来替代luaL_register. 使用如下。 int luaopen_libname(lua_State *L)

能上九天揽月,能下五洋捉鳖。 2万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

lua5.1 到 5.3的一些经常会接触到的改动

lua5.1 到 5.3的一些经常会接触到的改动 lua的官方文档,每个版本都有一节叫做"Incompatibilities with the Previous Version", 那里面简要描述了lua在语法、语义层面,标准库层面,CAPI层面上的变化,但是并没有涉及到方方面面, 并且lua的很多细微调整并没有出现在文档中,不过一般不用到太复杂的机制都不用担心。 而下面基本都是来

aftermisak的博客 6804

轻松升级lua_tinker支持lua5.2

lua_tinker自从lua5.0出来以后就鲜有更新 ,好在5.1没有对接口作大的修改让lua_tinker平稳的过渡,但到了lua5.2 发布以后 再执行tinker 能得到的也就只有报错的提示了。 关于5.2的修改 网上总结了不少,有不少宏都不用了而tinker恰好用到了其中的几个,比如LUA_GLOBALSINDEX lua_open ,如果简单的用新的宏替换掉旧的 #define L

DDR的专栏 5090

在Lua 5.2中保护全局环境

Lua脚本语言十分强大,但是有一个问题就是全局可写,比如你定义一个全局变量很容易不小心被另一个同名变量给覆盖掉。 这种问题一旦出现是十分难以调查的,该文章介绍的这种机制可以解决该问题。 我已经在我自己的工程中应用了该技术,它可以达到以下目的: 1.全局变量不能直接在Lua中被修改 2.可以创建出不能直接被修改的table 3.屏蔽一些你不想开放的Lua原生函数比如文件操作

axx1611的专栏 5293

002-结合UE5.2探讨Lua基础知识

本文摘要对比了Lua与UE5在基础编程概念上的异同,重点涵盖: 数值运算:Lua的算术操作与UE5的FMath数学库实现 字符串处理:包括比较、连接、数字转换等操作在两种环境中的实现方式 变量系统:Lua的动态类型与UE5的强类型系统及UPROPERTY特性 布尔逻辑:AND/OR/NOT运算符的应用及UE5的位运算实现 作用域管理:块作用域与UE5的模块化设计模式 错误处理:对比Lua解释器与UE5的日志/断言系统 通过具体代码示例展示了如何在UE5中实现Lua的编程范式

小宝哥Code的专栏 1637

LuaDec:Lua 5.1、5.2和5.3的Lua反编译器

LuaDec:Lua 5.1、5.2和5.3的Lua反编译器 【下载地址】LuaDecLua5.15.2和5.3的Lua反编译器 LuaDec 是一款功能强大的 Lua 反编译器,支持 Lua 5.1、5.2 和 5.3 版本,帮助开发者将编译后的 Lua 二进制文件还原为可读的源代码。它基于经典工具改进,提供了更高的兼...

gitblog_06774的博客 1320

修改lua_tinker以支持lua5.2

由于lua_tinker是在lua5.0的时候开发的,后来作者不知道哪去了,也不维护一下。还好lua5.1对c接口的改动不大,所以lua_tinker可以不作任何修改就可以支持lua5.1。但lua5.2的一项修改是去掉了LUA_GLOBALINDEX这个宏,所以lua_tinker中用到的lua_settable(L, LUA_GLOBALINDEX)和lua_gettable(L, LUA

isaf的专栏 3298

lua - lua 5.2+ 使用luaL_requiref 实现lua L_register 的功能

lua 5.2 去掉了luaL_register功能,不能直接注册函数到一个全局table中了。 网上找了很多文章都是要导出到库,再引用库。 // my_math.c #include <lua.h> #include <lauxlib.h> #include <lualib.h> #include <math.h> #includ...

汐客SeaKr的博客 3736
上一篇: 在VS2012中使用GitHub
下一篇: Lua学习笔记--Lua调用C初探
puppet_master
puppet_master 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄12年 2695粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值