Lua源码阅读一——在Windows下编译

Lua + win 10 + vs2017的运行环境和创建cocos2dx 3.17的lua项目(亲测) 不管用什么引擎写游戏,脚本语言是少不了要接触的! 首先,我说的这个搭建方法是建立在已经安装vs和下载了cocos引擎的前提了,安装vs和Cocos引擎太简单了,这里不做赘述,我只说说我搭建lua环境是的步骤和遇到的坑! 第一步:下载lua的源码  https://www.lua.org/   下载以后解压到c盘,这不是绝对的,我的习惯而已 接着打开vs开发者命令窗口     ... 阅读详情

最近感觉没啥可看,就看一下lua源码,打发打发时间吧。

首先需要下载编译lua源码了,笔者是在Windows+VS2005下编译通过

 

1.首先需要去官方网站上下载lua源码,到www.lua.org上下载lua源码,目前最新版本是5.1 RC4版本lua-5.1.4.tar.gz,解压之后,目录下有install文件,在该文件中详细说明了在linux下编译的过程,visual studio下的编译也提了一下

2.编译lualib

新建一个vc++控制台工程lualib,“应用程序设置”--->静态库,把默认生成的.h,.cpp删除,在设置一下不使用预编译头, 右键lualib工程-->添加--->添加现有项-->把lua源码的解压目录下src目录中的下列文件加入(如下的文件列表是在install中有说明的):

  library: lapi.c lcode.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c
  lmem.c lobject.c lopcodes.c lparser.c lstate.c lstring.c
  ltable.c ltm.c lundump.c lvm.c lzio.c
  lauxlib.c lbaselib.c ldblib.c liolib.c lmathlib.c loslib.c
  ltablib.c lstrlib.c loadlib.c linit.c

编译之后,会生成一个lualib.lib文件;

 

3.编译luac编译器

新建一个vc++控制台工程luac,把默认生成的.h,.cpp删除,设置一下不使用预编译头,右键luac工程--->添加--->添加现有项--->把lua源码的解压目录下src目录中的luac.c加入,右键项目依赖,依赖lualib,编译生成luac.exe;

 

4.编译lua解释器

新建一个vc++控制台工程lua,把默认生成的.h,.cpp删除,设置一下不使用预编译头,右键lua工程--->添加--->添加现有项--->把lua源码的解压目录下src目录中的lua.h, lua.c加入,右键项目依赖,依赖lualib,编译生成lua.exe;

 

5.双击生成的lua.exe,就运行起了lua解释器,可以在里面输入lua代码执行了:

 

6.调试lua

在lua.c文件中的main函数中下断点,F5运行,就会断下来了,如果想在解释器中执行lua代码的时候断下来,就需要在lua.c的loadline函数中下断点了,最终会调用到lualib里面的load_string函数中

 

 

QQ飞车LUC文件逆向:VFS解包与Lua字节码反编译实战 在游戏开发与资源逆向领域,虚拟文件系统(VFS)是一种常见的资源打包技术,用于优化加载效率与保护知识产权。其原理是将大量零散文件(如脚本、贴图)封装进少数容器文件,游戏运行时再动态读取。Lua作为一种轻量级脚本语言,其源代码(.lua)在发布时常被编译为字节码(.luc)格式,以提升执行速度并增加逆向难度。反编译技术则致力于将这种低级字节码逆向还原为可读的高级语言代码,其技术价值在于能穿透资源封装,让研究者得以分析核心逻辑、学习架构设计,并应用于安全的单机环境研究与MOD开发。本文聚焦于《QQ飞车》游戏,针 阅读详情

相关推荐

Windows游戏Lua脚本动态提取:Hook技术与逆向工程实战

在游戏开发与安全研究领域,动态分析运行时脚本是理解程序逻辑的关键技术。通过Hook(钩子)技术拦截目标进程的API调用,可以实时捕获内存中的脚本数据。这项技术的核心价值在于能够在不修改原始程序的前提下,实现对脚本引擎交互过程的监控与分析,广泛应用于游戏逻辑分析、安全审计和辅助工具开发等场景。本文聚焦于Lua脚本引擎,详细讲解如何通过进程注入和API Hook,从运行中的Windows游戏进程中动态提取Lua脚本文件,为逆向工程学习与游戏机制研究提供了一套清晰、可复现的实战方案。

cigang4063的博客 612

使用vs2010编译lua5.1源码生成lua.lib

一、打开vs2010 二、创建项目 新建项目->win32控制台应用程序->下一步->应用程序设置中选择静态库,不勾选预编译头->完成。具体如下图: 三、拷贝源码 将lua源码中的*.h文件拷贝到项目的头文件文件夹下,将lua源码中的*.c文件拷贝到项目的源文件文件夹下。 四、生成lua.lib 项目右键->生成。此时即可在项目的Debug文件夹下看到生成的 lua.lib了。

继续沉淀! 4610

GEO数据库数据下载方法总结

#GEO数据下载 GEO是生信分析经常用到的数据库。经常需要从中获取表达矩阵,平台信息,meta信息等,本博文总结了几种下载GEO数据的方法,各有优劣,实际应用过程中自行选择适合自己的。 ##方法一:直接从浏览器中下载 以数据集GSE1001为例, 可以直接点击“Series Matrix Files”获取该样本txt格式的表达谱数据,一般我们认为这种处理过的表达谱数据是没有问题的,当然,具体情况具体分析。 打开下载的文件可以看到许多“#”开头的行,这些是注释信息,一般关注这些注释信息中的“data pr

sakoko_的博客 4万+

Lua的静态编译(for 5.1)

Lua的静态编译(for 5.1)--by Coollen.MMX在下找遍了好多网站也没找到Lua的静态编译方法,而Lua自带的说明上也没有太详细的说明,作为一个新时代的程序员,背负着开创未来的历史责任……,写一点关于Lua编译手册。(可怜的Lua,和Python没法比啊,可惜在下又偏偏比较喜欢)。准备:1 VS 20052 lua 5.1 (http://www.lua.org/)

徐文伟-Coollen.MMX's Blog 2624

第二十三章 Nest集成日志框架Winston

Winston是一个非常流行的Node.js日志框架,而Nest.js是一个基于Node.js的后端框架。修改 winston.module.ts 内容如下 添加 forRoot 方法,接收 winston 的 createLogger 方法的参数,返回动态模块的 providers、exports。这里用到了 printf 的 format 函数,它可以自定义打印的日志格式 且使用了chalk 加上了颜色,并且打印了 dayjs 格式化的时间。可以看到控制台打印了自定义的 logger 的自定义。

枫ゞ的博客 1069

WslRegisterDistribution failed with error_ 0x8007019e、0x800701bc、0x80370102

Ubuntu 20.04.4 LTS 报错解决方案。分别涉及到三个错误:WslRegisterDistribution failed with error: 0x8007019e、WslRegisterDistribution failed with error: 0x800701bc和WslRegisterDistribution failed with error: 0x80370102

一起加油~ 5万+

win7 VS2013 新建工程 编译lua5.2.0 静态库

一 lua下载  lua5.2.0下载地址 :http://download.csdn.net/download/yzf279533105/9949183 二  Windows下: 编译静态库步骤: 1. 从上面的地址下载得到lua-5.2.0.tar.gz文件,解压得到lua-5.2.0文件夹 2.打开VS2013, “文件” -> “新建” -> “项目” -> 左侧选择“

papaya的博客 447

Claude Code 接入 DeepSeek-V4 教程

本文介绍Claude Code的安装配置流程:1) 安装Node.js 18+和Git(Windows);2) 通过npm全局安装@anthropic-ai/claude-code;3) 配置DeepSeek API环境变量(需替换API Key);4) 启动Claude Code或配置VSCode插件。重点包括Linux/macOS和Windows的环境变量设置方法,以及VSCode插件的settings.json配置项。完成配置后即可在终端或VSCode中使用Claude Code功能。

培根芝士的专栏 2007

Windows下lua的编译与环境搭建

windows环境下编译lua源码生成编译器和动态库

faybull的博客 1万+

J204B接口数据链路的建立

介绍J204B数据链路层的建立方式

QUACK_G的博客 6547

安装anaconda3时出现错误:Failed to link extracted packages to D:\anaconda!...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1479

lua源码编译linux,Windows下编译Lua源码

因为之前一直使用首先从所有的lua源码都放在了 src 文件夹下,当然,不同的lua版本目录结构有可能不一样,但是都会有 src 这个文件夹,只有这个才是我们编译必须的。而且lua越做越精简了,5.1的版本里面还有一些test的例子之类的,5.2就只剩下必须的内容了。然后,如果是第一次编译lua,还是建议看一下doc文件夹下面的 readme.html。我就是通过那个才知道编译lua必备的文件的。...

weixin_36289742的博客 521

RT-DETR改进策略【RT-DETR和Mamba】| CVPR 2025:EfficientViM 压缩隐藏状态空间进行通道混合、单头设计减少内存操作,提升目标检测效率与精度

本文记录的是利用模块优化的目标检测网络模型。EfficientViM Block(基于隐藏状态混合器的状态空间对偶性模块) 的设计旨在,提升特征提取效率,同时兼顾全局依赖捕捉与局部细节保留。本文将深入研究的原理,并将其应用到中,通过重构特征提取流程、减少内存绑定操作、融合多阶段特征,增强模型在资源受限环境下的检测性能与速度。Depth Information Assisted Collaborative Mutual Promotion Network for Single Image DehazingLE

Limiiiing的博客 916

Lua windows编译

lua官方只有MakeFile,在windows下編譯的話,需要用mingw太麻烦了。打開build或者build-64目錄下的解決方案,進行編譯即可。

yuanshenqiang的博客 502

2021-10-29【微生物】丨基于qiime2工具16S/ITS分析全套流程(上)

目录摘要工具与方法使用命令结果展示总结二级目录三级目录 摘要 前两个月项目特别多,最近终于有机会闲下来写点文章,把之前搭建的流程梳理一遍。前同事分析16S/ITS使用的qiime1,我接手后感觉不太适应,希望能够使用新版本来搭建,于是花了几天时间重新搭了这个流程, 工具与方法 使用工具:qiime2 使用版本:qiime2-2021.4 参考文档:https://docs.qiime2.org/2021.4/(最新版本2021.8) 使用命令 在这里插入代码片 结果展示 总结 二级目录 三级目录 ...

1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

lua环境搭建(windows):window平台搭建Lua开发环境(转载)

window平台搭建Lua开发环境(转载) 原始链接:https://www.jianshu.com/p/2f649d9aef6d window平台搭建Lua开发环境 young路在脚下关注 0.1742016.08.03 20:21:28字数 864阅读 13,701 这几天正在学习lua这门脚本语言,首先要解决的是开发环境的问题,因此本文记录一下在window平台下如何搭...

黄道婆的专栏 1743

深度学习工具包 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")

如何编译lua源码

介绍如何编译lua源码

iDaDi的博客 698

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Redis源码在windows下的成功编译(附cmake工程配置)

缘由 工作原因需要对源码进行研究,另外也是为了更好的使用redis,读 Redis 源码是很有必要的。 第一步就是先把源码fork下来,然后加入cmake项目工程编译打包生成程exe可执行程序。只有自己能够打包编译才方便自由hack。中间遇到一些问题,这里总结记录下。 第二步,就是后续计划进行一些源码分析相关的总结。 源码地址 项目源码下载地址: https://github.com/microsoftarchive/redis 起初以为很简单的把源码路径和头文件加载进来就行了,结果编译遇到N

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 5916

使用Qt编译Lua

本文介绍使用Qt5.14.2在Win10上编译Lua源码,并将Lua源码编译成三个不同的目标文件,它们分别是:0:LuaLib(Lua动态库)、1:LuaCompile(Lua编译器)、2:LuaExplanation(Lua解释器)。

晓琴儿 1450

Windows下用VC6.0编译Lua源码 生成静态库和动态链接库

1、 下载Lua源代码 到 http://www.lua.org/download.html 官网下载,我下载的是 lua-5.3.0 版本,解压源码包,得到 src 文件夹,这例有我们下面编译需要的文件 也可以到我的百度网盘下载用VC6构建好的工程 http://pan.baidu.com/s/1hMHm2 当然也需要个编译器,这里我用的是Microsoft Visual C++

Totohack的专栏 2800

VS2015中搭建lua环境

VS2015中搭建lua环境一 生成lua5.3.lib1、下载并编译lua源码2、启动VS2015创建新的项目二 Lua测试 转自https://blog.csdn.net/pangjiuzala/article/details/52587976 所以本篇博文介绍在Windows平台下,使用VS2015搭建lua开发环境的一些侥幸成功经验,安装过程参考网上教程,安装过程如下(参考http:/...

斧冰 426

DDR顺序读写带宽建模:从公式到实测的完整方法论

在嵌入式系统与FPGA设计中,DDR存储器带宽是决定系统性能的关键资源。许多工程师习惯用平均带宽估算余量,却忽略了DDR控制器处理离散事务时产生的协议开销、刷新损失与读写切换惩罚,导致高负载场景下出现帧率下降或FIFO溢出。本文从DDR顺序读写的典型应用场景出发,给出从业务数据率到DDR侧带宽需求的建模公式,剖析bank管理、刷新周期与读写切换对带宽效率的影响,并基于实测经验提供不同DDR配置下的可用带宽参考值。通过1080p60视频处理系统的完整实例,演示平均带宽与峰值带宽的评估方法,以及如何利用性能计数

weixin_34007906的博客 520

【Lua学习】Lua最最基础的

lua最最基础的

weixin_42206314的博客 2070

lua:lua环境搭建

Lua除了是一门扩展的言语外,还是一门“胶水语言”。最著名的就是作为游戏的脚本开发。 这里主要说lua怎样与c交互。 Lua和c语言通信的主要方法是一个无所不在的虚拟栈。几乎所有的API调用都会操作这个栈上的值。所有的数据交换,无论是Lua到C语言或C语言到Lua都通过这个栈来完成。栈可以解决Lua和C语言之间存在的两大差异,第一种差异是Lua使用垃圾收集,而C语言要求显式地释放内存...

a857351839的博客 170

windows 64位 luajava编译

windows 64位 luajava编译 环境vs2008, win64 下载lua源码 执行vcvarsall.exe x64 etc\luavc.bat 下载luajava源码 修改config.win, 修改cl, 取消DWin3...

aipang7206的博客 183
上一篇: Chapter1 Lua 中的转义字符 and get start with Lua ,Types and Value
下一篇: Build Lua on window hit Link error
wanglang3081
博客等级 码龄19年 385粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值