VS2015编译Caffe2(目前已编译CPU+GPU+python+opencv)

已经编译好的Caffe 快速安装Caffe的示例工程,这是我自己用该方法编译成功的Caffe工程。 立即下载

官方编译参考:https://caffe2.ai/docs/getting-started.html?platform=windows&configuration=compile

官方的安装指导不全面,留了很多坑,不把坑填了会导致编译失败,本文的主要目的在于填坑,官方文档里说过的内容就不再详细介绍了。


一、下载源码

git clone --recursive https://github.com/caffe2/caffe2.git

         该步骤无需解释

二、配置cuda、python、cmake等第三方软件

        cuda不是必须的,可以编译only cpu版本;

        python我装的是anaconda的2.7,按照官方文档安装了各种python包,具体安装哪些模块请参考官方文档;

        cmake必须装,去官网下载安装包就可以;

三、修改caffe2脚本:

        这里是重点,下面开始填坑。我是2017年12月1日下载的caffe2源码,当你看到这篇文章的时候,有可能这些坑已经被官方更新填掉了,也有可能被官方挖出新的坑。

        1、修改“(源码根目录)\scripts\build_host_cmd.bat”

        我用VS2015 64bit编译,所以需要修改编译选项相关的cmake变量,如果你使用vs2017编译,则不需要修改该选项。在开头的@echo off下一行添加语句:set CMAKE_GENERATOR="Visual Studio 14 2015 Win64"

       

        2、修改“(源码根目录)\scripts\build_windows.bat”

        和二、1一样,我用VS2015 64bit编译,所以需要修改编译选项相关的cmake变量,如果你使用vs2017编译,则不需要修改该选项。在开头的@echo off下一行添加语句:set CMAKE_GENERATOR="Visual Studio 14 2015 Win64"

       

        该脚本中还有一些用于控制是否编译python接口、是否使用cuda等特性的开关变量,可自己根据需要修改。建议先用默认的设置进行编译验证,待编译成功后再修改这些变量重新编译,以免出错时不容易定位原因。

         3、修改"(源码根目录)\caffe2\cmake\Proto_buf.cmake"

        找到如下代码段:

            if (WIN32)

                find_package(Protobuf NO_MODULE)

            elseif (ANDROID OR IOS)

            ……

        这段代码会导致编译器找不到Protobuf模块,造成编译失败。按照下图所示修改,就是将if这段注释掉,并将后面的elseif修改为if。

        

        4、如果在二、2所述的build_windows.bat中将BUILD_PYTHON变量改为ON,即打开了python接口的编译选项,则还需要修改"(源码根目录)\caffe2\cmake\Dependencies.cmake"。如果不编译python接口,则该步骤可忽略。

        在if(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND AND NUMPY_FOUND)下面一行添加如下语句:

        list(APPEND Caffe2_PYTHON_DEPENDENCY_LIBS ${PYTHON_LIBRARIES})

        这句话的作用是将python27.lib(我安装的anaconda是python2.7版本)添加到link选项里。如果不添加这句话,编译时会出现无法链接python27.lib的错误。不知道作者有没有在windows下编译过自己的作品,看样子应该是没有。

       5、添加CUDA和OpenCV支持,在build_windows.bat中,将USE_CUDA和BUILD_OPENCV设为ON,然后……然后……然后你得改一大堆东西,不是一句话两句话能说清的,十分酸爽……想开cuda和opencv的,还是等作者更新代码吧,我就不赘述了。大笑

       多说一句,vs2017编译带cuda的版本不成功,中途报了个莫名其妙的错误,至今不知何意。

       

四、编译

        进入带有python路径设置的命令行,anaconda直接启动Anaconda Prompt即可,切换路径到源码根目录,再进入scripts文件夹,运行build_windows.bat脚本,耐心等待编译完成。漫长的等待结束之后,如果你的人品足够好,应该就可以看到编译成功的提示了。可以用vs2015打开(源码根目录)/build下的vs解决方案,编译Debug等其他配置方案,或者进行跟踪调试,或者添加工程开发新程序。

       

编译好的Caffe2压缩包 用VS2017编译好的caffe2,个人编译的话会遇到非常多的问题。 立即下载

相关推荐

编译好的caffe项目文件

已经编译通过的caffe文件,包含修改好的Makefile.config和Makefile配置文件。

windows编译安装(合并pytoch之后的)caffe2教程

注意 在windows平台,请不要使用在官方下载的libtorch,虽然里面有caffe2的库,但是有很多核心代码都没有编译。所以直接使用官方下载的libtorch会报错误, [E ..\caffe2\core\operator.cc:143] Cannot find operator schema for GivenTensorFill. Will skip schema checking...

The space of Shining 1262

caffe2 入门教程(python完整版)

caffe2的python教程

windows、visual studio 2015上编译Caffe2

windows、visual studio 2015上编译Caffe2一、软件准备二、CMD窗口安装模块三、增加/修改环境变量四、修改build_host_protoc.bat五、修改build_windows.bat六、修改Cuda.cmake七、CMD窗口编译八、VS编译九、拷贝十、运行MNIST.PY检验 一、软件准备 Windows 10 64位; Visual studio 2015 ...

fengye2two的专栏 821

window环境下py3.5和vs2017编译的 caffe【无GPU加速】

由于caffe安装环境非常麻烦,所以提供事先编译好的动态链接库。下载后直接解压到python的site-packages就好

如何在SendWS实现WhatsApp批量群发设置管理?WhatsApp群发超链有什么好处?

WhatsApp群发顾名思义就是对WhatsApp上的用户好友进行群发消息,给他们群发想要发送的消息。及时不认识对方也可以对他进行群发超链。越来越多做跨境出海运营的工作者利用WhatsApp进行营销推广,因为他能做到低成本高回报,向客户发送消息曝光自己的品牌或产品,使得更多人了解,拓展新客户,提高成交率。

SendWS-WS云控群控拓客聊天翻译 1170

Windows 下用 build_win.cmd 直接编译 GPU 版caffe

1.安装CUDA 首先我们得从CUDA官网,下载对应版本得CUDA,这里打开默认是CUDA 10,若我们想下载低版本的 CUDA,如下图,选择 Legacy Releases: 这里以 CUDA 8.0 为例: 点击下载,下载完是一个 .exe 文件,只要硬件符合直接双击安装即可。 2.安装cudnn 这里自行下载,需要在 NVIDIA 的cudnn官网 注册一个账号,免费的,以后可能都会用到...

Chris_zhangrx的博客 3517

AutoModelForCausalLM 加载失败:flash_attn 缺失的三种解决方案

本文针对使用AutoModelForCausalLM加载大语言模型时因缺失flash_attn依赖而报错的问题,提供了三种实用解决方案。最推荐通过修改模型配置文件或代码动态指定注意力实现为“eager”模式来绕过检查,也介绍了临时修改库源码的应急方法,并解释了flash_attn的作用及正确安装指南。

html8的博客 269

windows +caffe+python2.7或者python3.5编译 。

caffe 只支持python2.7和3.5。想要编译caffe需要vs2013和vs2015,并且cpu版和gpu版不通用。很坑。 python2.7和python3.5中的print方法 一个是 print "hello",一个是print("hello")。有时候需要报错咱们手动改。 前期编译的大部分No module错误都可以通过pip install 解决。(另外No module的时候最好到百度搜一下,有个别情况pip安装的包名和报错的包名不一样,但是他们俩是一个。) 我安装python3

燕儿归的专栏 1365

【隐私计算】从本地加法到在线乘法:Beaver Triple如何重塑算术秘密分享的运算效率

本文深入探讨了Beaver Triple在算术秘密分享中的关键作用,显著提升了隐私计算中的乘法运算效率。通过对比加法与乘法的实现差异,详细解析了Beaver Triple的预处理机制和在线计算优化,展示了其在减少通信量和计算时间方面的革命性突破。

weixin_29227585的博客 436

UVM对象实例化及覆盖的几种方法

UVM对象实例化的方法有多种,以下以object为例: 1)第一种:直接利用new函数进行实例化 trans t1; t1 = new("t1");//利用new函数进行实例化 2)第二种:uvm_component_registry中提供的方法type_id::create,此种方法也是最常使用的方法 trans t2; t2 = trans::type_id::create("t2",this); 3)第三种:uvm_factory中提供的方法creat_object_by_type trans t

沧月九流的博客 3377

VS2015 + 新caffe + CUDA8.0 + CUDNN5.1在windows10下配置

    在linux下折腾了一段时间,打算在笔记本上面折腾一下的时候发现新版本的caffe删除了./windows文件夹,纠结了半天重新解决。只是自已折腾能用,并不代表所有步骤都是最优,仅供参考。    (由于内容为配置成功后根据自已记忆编写,可能存在一些忘记的地方。)    在进行下列步骤前,应该已经装好了CUDA8,CUDNN5.1,VS2015,cmake 3.4.2, Anaconda3-...

在在在的博客 1022

知识图谱本体建模工具Protege使用教程

1.下载 先去官网下载:protégé 直接下最新版,点击会有注册页面,只填必填项的name和project description即可。 下载后解压即可使用。 2、安装可视化工具Graphviz 去官网:Download | Graphviz下载。下一个最新版的zip就行。 我解压在了Protege文件夹下,然后在 Preference下指定目录。 指定一下你解压完的Graphviz下的dot.exe,确定。 PS:如果这样报错就尝试在环境变量的系统变量的...

子麒的博客 2万+

win10+vs2015下caffe安装详解

本人安装环境: 1, windows10操作系统 2, vs2015,可以下载官方Community版本,这个可以一直免费使用 3, python2.7,可以参考该链接http://blog.youkuaiyun.com/qq_14845119/article/details/52354394 4, 官方BVLC版本的caffe ,https://github.com/BVLC/caffe...

年轻即出发, 1万+

超详细YOLOv8目标检测全程概述:环境、训练、验证与预测详解

这篇博文提供了一个关于使用YOLOv8进行目标检测的全面指南,包括环境搭建、模型训练、验证和预测的详细步骤,以及如何解释训练过程中生成的各种图表和数据。整篇文章为读者提供了一个关于如何利用YOLOv8进行目标检测的实践指南,从环境搭建到模型部署,再到结果分析,每一部分都给出了详细的步骤和解释。此外,还有对于模型输出的解释,帮助读者更好地理解和使用YOLOv8模型。

CDBmax的博客 10万+

从零开始学习AI人工智能本体论:概念与实战

本文旨在为初学者提供一个全面而易于理解的人工智能本体论入门指南。我们将覆盖从基本概念到实际应用的全过程,帮助读者理解本体论在AI系统中的核心作用。核心概念与联系:介绍本体论的基本概念和原理核心算法与操作步骤:详细讲解本体构建和推理方法项目实战:通过实际案例展示本体论的应用实际应用场景:探讨本体论在不同领域的应用未来发展趋势:展望本体论在AI领域的前景本体论(Ontology): 在AI中,指对特定领域概念及其关系的明确形式化描述。

AI智能探索者的博客 868

win10+VS2015+pycaffe编译

这里的环境是WIN10+cuda v8 +cudnn v6 + opencv + pycharm+VS2015使用的是GPU,我的GPU是titan 6G+内存16G首先是caffe的文件以及第三方库的编译,这里提供一个已经编译好的的连接:但是这个网址上的编译教程有漏洞,编译步骤我总结如下:1.下载:https://github.com/happynear/caffe-windowsRequire...

jacke121的专栏 3776

AgentScope 2.0 API完全指南:构建企业级AI智能体应用的技术实践

本文系统梳理AgentScope 2.0框架的完整API体系,涵盖智能体核心引擎、统一模型适配层、工具系统、消息协议、权限控制与工作空间管理等七大核心模块。通过深入的源码级分析与架构图示,详细解读Agent类的推理-行动循环、ChatModelBase的多模型抽象、Toolkit的工具管理机制、ContentBlock的多模态内容表达、PermissionEngine的安全决策流程,以及Local/Docker/E2B三种工作空间实现。文章还提供了智能客服系统的完整实战案例,展示从自定义工具开发到流式服务部

program哲学 470

Win7_X64 + VS2013 + CUDA + Caffe 配置记录

目录1. 背景2. CUDA3. Caffe 1. 背景 2. CUDA 3. Caffe

鸟恋旧林的博客 474

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

【caffe笔记1】caffe+win10+VS2013配置与常见问题(简单易懂)

caffe+DL正在学习中……请多多指教多多补充……     作为一名caffe+DL新手,总结了一下新手配置caffe+win10+VS2013配置与我遇到的问题和解决方法,如有错误,务必留言指出! 首先,电脑里得有VS2013,MATLAB(我用的MATLAB R2014a)…… (1)下载地址bling~bling:微软提供window工具包https://github.com

code_caq的博客 1517

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Caffe搭建:Ubuntu14.04 + CUDA7.0 + opencv3.0 + Matlab2014A

   从Hinton在science上发表深度学习训练开创新的文章以来,深度学习火了整整有3年多,而且随着新的硬件和算法的提出,深度学习正在应用于越来越多的领域,发挥其算法的优势。   实验室并没有赶上第一波深度学习热,但是让人高兴的是最近终于配了一台超级电脑,虽说和谷歌、百度几百个上千个GPU跑算法的设备不能比,但是好歹终于有了搭建自己的深度学习平台,想想还很是兴奋。最近这几天忙着搭建深度学习...

weixin_30376083的博客 216

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

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

【caffe-Windows】caffe+VS2013+Windows无GPU快速配置教程

http://m.blog.youkuaiyun.com/article/details?id=51355143 http://blog.youkuaiyun.com/a3137732/article/details/51417378 http://www.cnblogs.com/love6tao/p/5706830.html http://www.cnblogs.com/denny402/p/5041

maweifei的博客 1041

windows10下编译SSD cuda8.0 失败,cpuonly成功

最近又尝试了在windows10下编译SSD,无奈出现了很多错误。 参考网址:https://github.com/conner99/caffe 首先是需要VS2013,由于我是装了VS2015,所以打算半将半就用2015编译,然而2015打开下载nuget依赖包的时候就死机,无奈放弃,又装了VS2013 下载了caffe-ssd-microsoft之后复制path\to\caffe

thomaszhaoyc的博客 2644

【边喝caffee边Caffe 】(一)Caffe的安装

Caffe的安装还挺麻烦,尤其我最后选择的是在windows上安装,真心不容易。 Caffe在ubuntu的安装相对简单一点,资料也很多,以后安装了再写出安装过程。 这是一些可以参考的Caffe在windows上的安装过程。 https://github.com/happynear/caffe-windows https://github.com/niuzhiheng/caff

Row Row Row your boat 3191

caffe+VS2013+Windows无GPU快速配置教程

前言 首先来一波地址: happynear大神的第三方caffe:http://blog.youkuaiyun.com/happynear/article/details/45372231 Neil Z大神的第三方caffe:https://initialneil.wordpress.com/2015/01/11/build-caffe-in-windows-with-visual-stud

博士猫的专栏 438
上一篇: 用excel绘制甘特图
下一篇: 更新Jetson TX2内核及dtb文件
此何人哉
博客等级 码龄20年 30粉丝 32原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值