windows下使用MinGW+msys编译ffmpeg,以及如何加入eclipse CDT调试

原文地址:http://blog.chinaunix.net/uid-20718335-id-2980793.html

我参照该文章成功编译ffmpeg,其中稍微修改或者说明了一些内容。HGH MARK就是我说明的。

看了其他网上大多数编译ffmpeg的都较简单,这篇文章带了比较多的第三方库。原作者写的很详细,感谢了。

我是2012年12月12日编译,均采用了最新的软件版本。其中ffmpeg-1.0.1的configure没有--enable-faad选项。

 

windows下使用MinGW+msys编译ffmpeg

本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处
FFmpeg是在Linux平台下开发的,但它同样可以在其它操作系统环境中编译运行,本文介绍的就是在windows下编译FFmpeg。
一 编译准备
您最好新建一个目录专门用来保存以下下载的文件。
1 下载 MinGW 和MSYS
MinGW(Minimalist GNU on Windows):一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时库。
到:http://sourceforge.net/projects/mingw/ 去下载即可
A 点击“DownLoad mingw-get-inst-...exe”
B 切换到页面:download? Check your browser's security bar, or try adirect link, or try another mirror.
C 点击“direct link”下载类似:mingw-get-inst-20111118.exe的文件
提示:msys此处就不用再下载了,mingw-get-inst-20111118.exe中已经包含了msys1.0,后面安装的时候就可以看到该选项。


2 下载 yasm(汇编编译器)
ffmpeg编译的时候里面的汇编代码需要yasm.exe
去官网:http://yasm.tortall.net/Download.html 下载
在LatestRelease栏,直接下载:Win32 .exe (for general use on 32-bit Windows)
文件名类似为:yasm-1.2.0-win32.exe
3 下载 ffmpeg
ffmpeg可以到 http://www.ffmpeg.org/releases/ 下载
选择的一个最新版本下载即可,如:ffmpeg-0.8.6.tar.gz
文件名类似为:ffmpeg-0.8.6.tar.gz
当然你也使用网上介绍的使用SVN直接下载源代码的方法。
svn://svn.mplayerhq.hu/ffmpeg/trunk
4 下载 mp3lame(支持mp3,可选项)
为了让编译出来的ffmpeg支持对mp3格式的编解码,您需要先下载lame。
到:http://sourceforge.net/projects/lame/files/ 下载
文件名类似为:lame-3.99.2.tar.gz的包。
5 下载 x264(支持x264,可选项)
为了让编译出来的ffmpeg支持对x264格式的编解码,您需要先下载x264。
到:http://www.videolan.org/developers/x264.html下载
文件名类似为:last_x264.tar.bz2的包。
6 下载 Xvid(支持Xvid,可选项)
为了让编译出来的ffmpeg支持对Xvid格式的编解码,您需要先下载Xvid。
到:http://www.xvid.org/ 下载
文件名类似为:xvidcore-1.3.2.tar.gz的包。
7 下载 faad2(支持faad,可选项)
到:http://www.audiocoding.com/downloads.html 下载:Version2.7 bootstrapped TAR.GZ Package
文件名类似为:faad2-2.7.tar.gz的包。
8 下载 faac(支持faac,可选项)
到:http://www.audiocoding.com/downloads.html 下载:Version1.28 bootstrapped TAR.GZ Package
文件名类似为:faac-1.28.tar.gz的包。
9 下载 aacenc(支持aac,可选项)
到:http://sourceforge.net/projects/opencore-amr/files/ 下载:vo-aacenc
文件名类似为:vo-aacenc-0.1.1.tar.gz的包。
10 下载 amr-nb与amr-wb(早期ffmpeg支持3gp,可选项)
到:http://www.penguin.cz/%7Eutx/amr 下载:amrnb-7.0.0.2.tar.bz2与amrwb-7.0.0.4.tar.bz2
文件名类似为:amrnb-7.0.0.2.tar.tar与amrwb-7.0.0.4.tar.tar的包。
11 下载 opencore-amr与vo-amrwbenc(支持3gp,可选项)
到:http://sourceforge.net/projects/opencore-amr/files/ 下载:opencore-amr与vo-amrwbenc
文件名类似为:opencore-amr-0.1.2.tar.gz与vo-amrwbenc-0.1.1.tar.gz的包。
12 下载 SDL(支持SDL,可选项)
SDL下载可以到:http://www.libsdl.org/download-1.2.php
在SourceCode栏选择类似:SDL-1.2.14.tar.gz - GPG signed 进行下载,
文件名类似为:SDL-1.2.14.tar.tar,此文件需要编译才能生成lib库。
也可以直接下载SDL-devel-1.2.14-mingw32.tar.gz (Mingw32),文件名类似为:SDL-devel-1.2.14-mingw32.tar.tar,此文件带有编译好的lib,在编译ffmpeg时可以直接使用。
13 下载 pthreadGC2.dll
pthreadgc2.dll是功能强大的处理数字化影视作品编辑软件premiere6运行所需的一个DLL文件。这是一个无威胁文件。属于OpenSource Software community project的文件。
直接去baidu.com三搜索下载就可以了。
二 编译步骤
1 安装 mingw 和msys
执行下载文件:mingw-get-inst-20111118.exe,
在第3步选择“Downloadlatest repository catalogues”
选择安装路径:C:\MinGW(我直接采用默认路径,未做修改)
在“SelectComponents”步骤中选择:
√ C Compiler (默认且一定选择)
√ C++ Compiler
√ MSYS Basic System(选择此项将会安装msys,msys则不需要另外安装)
√ MinGW Developer ToolKit
等待安装完成!(需要等待一定的时间,因为安装过程需要下载文件,可想而知,网速越快,安装越快)
安装完成后,在C:\MinGW目录下可以看到msys 文件夹,msys也已经安装。
2 配置 msys.bat 批处理文件
为了方便VS200X以及VS2010调用ffmpeg的动态库,可以通过配置让ffmpeg编译时产生windows下调用dll对应的lib,当然,如果你没有这个需要,那么就可以省略以下处理,直接进入步骤3。
进入:C:\MinGW\msys\1.0\文件夹,使用UltraEdit打开msys.bat文件,在文件的最最前面加入如下一行:
call "D:\Program Files\Microsoft Visual Studio10.0\VC\bin\vcvars32.bat"
添加后效果如下:
call "D:\Program Files\Microsoft Visual Studio10.0\VC\bin\vcvars32.bat"
@echo off
rem Copyright (C): 2001, 2002, 2003, 2004, 2005 Earnie Boyd
rem mailto:earnie@users.sf.net
rem This file is part of Minimal SYStem
rem http://www.mingw.org/msys.shtml
rem
rem File: msys.bat
rem Revision: 2.4
rem Revision Date: December 8th, 2005
rem ember to set the "Start in:" field of the shortcut.
rem A value similar to C:\msys\1.0\bin is what the "Start in:" fieldneeds
rem to represent.
其中“D:\ProgramFiles\Microsoft Visual Studio 10.0”为你机器上安装VS200X或VS2010的目录,我的电脑安装的是VS2010,并且安装在了D盘。文件修改后保存即可。
3 系统整合
使用UltraEdit修改C:\MinGW\msys\1.0\etc目下的fstab文件,如果不存在fstab,请复制一份fstab.sample,然后改名为:fstab,再修改其内容为:C:/MinGW/mingw,也即为MinGW的安装路径。
4 配置 yasm
为了减少配置环境变量的麻烦,本处直接把 yasm-1.1.0-win32.exe 文件名修改成:yasm.exe,并放到系统目录下:C:\WINDOWS\system32。
5 编译 mp3lame(可选项)
lame-3.99.2.tar.gz 接压到:D:\ffmpeg\ 目录下,双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,切换到lame目录:D:\ffmpeg\lame-3.99.2
$ cd /d
$ cd ffmpeg
$ cd lame-3.99.2
再执行以下命令:
$./configure --disable-shared (首选)
: $./configure --disable-static--enable-shared
$ make
$ make install
编译结果在:C:\MinGW\msys\1.0\local目录下

 


6 编译 x264(可选项)
last_x264.tar.bz2 接压到:D:\ffmpeg\ 目录下,双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,切换到x264目录:D:\ffmpeg\x264-20111124-2245
$ cd /d
$ cd ffmpeg
$ cd x264-20111124-2245
再执行以下命令:
$./configure --enable-shared --disable-asm
$ make
$ make install
编译结果在:C:\MinGW\msys\1.0\local目录下
7 编译 Xvid(可选项)
xvidcore-1.3.2.tar.gz 接压到:D:\ffmpeg\目录下,双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,切换到xvidcore目录:D:\ffmpeg\xvidcore\build\generic
$ cd /d
$ cd ffmpeg
$ cd xvidcore/build/generic
再执行以下命令:
$./configure --prefix=C:/MinGW/msys/1.0/local
$ make
$ make install
编译结果在:C:\MinGW\msys\1.0\local目录下。
需要注意的就是:此处编译加上了路径
如果make时出现:cc1.exe:error: unrecognized command line option '-mno-cygwin' 错误,请在./configure后make之前修改xvidcore\build\generic里的platform.inc文件,直接删除里面的“-mno-cygwin”。
具体可以参考:http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=5&t=111里2楼的回答,如果按他说的:Irecommend re running ./bootstrap.sh after you do this.,我发现不太行,一运行bootstrap.sh后,platform.inc文件会被还原,并且./configure时也会还原该文件,所以我选择在./configure后make前修改,可以编译通过,目前没检验Xvid是否可用。
8 编译 faad2(可选项) (HGHMARK若采用ffmpeg1.0.1没有--enable-faac,该项可以不编译

ad2-2.7.tar.gz 接压到:D:\ffmpeg\ 目录下,双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。切换到faac2目录:D:\ffmpeg\faad2-2.7
$ cd /d
$ cd ffmpeg
$ cd faad2-2.7
再执行以下命令:
$./bootstrap
$./configure --disable-static --enable-shared
$ make
$ make install
编译结果在:C:\MinGW\msys\1.0\local目录下

 

HGH MARK

错误:mingw...include/sys/types.h :55:16:error: two or more data types in declaration

处理:

方法1

参考http://bbs.chinavideo.org/viewthread.php?tid=5225&extra=&page=1

下载faad2-2.7.diff,放到faad2-2.7目录里面,在MINGW32命令行里执行,

patch-p1 <faad2-2.7.diff。然后重新执行./bootstrap。。。等4条命令。

方法2参考http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece76310578a215905d7376197854268d4e414c42246070735b2e270620d13d2b128205dfe5e5d9ca6613464587ea09bccdb118bac935e2e8b2131731c875612d74cef960167d627e401bfb81891bff23484aed680990f05dd52737982f28e5806008f32b0423ebcfdc51d504810cbfa4066e82e753ee92357c137eee1423a54d2a0ca5d3cd45ad67666e1b844c72966b404a46e5d6119b74cc05511313091107abf132a04e3bd0ea1796e4052f003f1ee80a1eb39d780fd31e9ac9cfe71c620b583b1a42d&p=8d6f8d1093934ea95ab0c7710d138a&newp=882a934792951cb106be9b7e084d81231615d70e3cd6db103b82ce56cd&user=baidu&fm=sc&query=mingw+%B1%E0%D2%EBfaad%B4%ED%CE%F3+two+or+more+data+types+in+declaration&qid=b531d7f31092e173&p1=5

打开frontend/main.c,搜索注释

#define off_t __int64

然后重新makemake install.

9 编译faac(可选项)
faac-1.28.tar.gz 接压到:D:\ffmpeg\ 目录下,双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。切换到faac2目录:D:\ffmpeg\faac-1.28
$ cd /d
$ cd ffmpeg
$ cd faac-1.28
再执行以下命令:
$./bootstrap
$./configure --disable-static --enable-shared
$ make
$ make install
编译结果在:C:\MinGW\msys\1.0\local目录下

 

HGH MARK

错误:mpeg4ip_win32.h:66: error: 'int snprintf(char*, size_t, const char*, ...)' wasdeclared 'extern' and later 'static'

处理:

方法1:参考http://bbs.chinavideo.org/viewthread.php?tid=5225&extra=&page=1

下载faac-1.28.diff,放到faac-1.28目录里面,在MINGW32命令行里执行,

patch-p1 <faac-1.28.diff。然后重新执行./bootstrap。。。等4条命令。

方法2:(未尝试)

参考http://bbs.chinavideo.org/viewthread.php?tid=5225&extra=&page=2

configure时增加参数 --without-mp4v2


10 编译vo-aacenc (可选项)
vo-aacenc-0.1.1.tar.gz 接压到:D:\ffmpeg\目录下,双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。切换到vo-aacenc目录:D:\ffmpeg\vo-aacenc-0.1.1
$ cd /d
$ cd ffmpeg
$ cd vo-aacenc-0.1.1
再执行以下命令:
$./configure --disable-shared
$ make
$ make install
编译结果在:C:\MinGW\msys\1.0\local目录下
11 编译amr-nb和amr-wb(早期ffmpeg版本,可选项)
在编译amrnb和amrwb之前还需要做点其它的准备工作:
A 先到网上搜索下载wget工具,解压后放到C:\MinGW\bin目录下,此工具是个网络下载工具,用来在编译时自动下载3gpp源码。

HGH MARK 下载了一个wgetwindows.zip,拷贝libssl32.dll,libeay32.dll,wget.exe到MinGW\bin目录下。


B 再先到http://downloads.sourceforge.net/gnuwin32/unzip-5.51-1-bin.zip 下载unzip-5.51-1-bin.zip后进行解压,并把unzip-5.51-1-bin\bin中的unzip.exe拷贝到C:\MinGW\bin目录下,此工具用来在编译时自动解压3gpp源码。
amrnb-7.0.0.2.tar.tar 接压到:D:\ffmpeg\目录下,双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。切换到amrnb目录:D:\ffmpeg\amrnb-7.0.0.2
$ cd /d
$ cd ffmpeg
$ cd amrnb-7.0.0.2
再执行以下命令:
$./configure --disable-static --enable-shared
$ make
$ make install
编译结果在:C:\MinGW\msys\1.0\local目录下
amrwb-7.0.0.4.tar.tar 接压到:D:\ffmpeg\ 目录下,双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。切换到amrwb目录:D:\ffmpeg\amrwb-7.0.0.4
$ cd /d
$ cd ffmpeg
$ cd amrwb-7.0.0.4
再执行以下命令:
$./configure --disable-static --enable-shared
$ make
$ make install
编译结果在:C:\MinGW\msys\1.0\local目录下
12 编译opencore-amr 和vo-amrwbenc(可选项)
opencore-amr-0.1.2.tar.gz 接压到:D:\ffmpeg\ 目录下,双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。
如果是opencore-amr-0.1.1.tar.gz请注释掉以下Makefile中的几行
文件:./opencore-amr/amrnb/Makefile
install: libopencore-amrnb.a $(SHLIB)
install -d $(DESTDIR)$(PREFIX)/lib
install -m 644 libopencore-amrnb.a $(DESTDIR)$(PREFIX)/lib
# install $(SHLIB) $(DESTDIR)$(PREFIX)/lib
ifneq ($(shell uname), Darwin)
# ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)
# ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/lib/libopencore-amrnb.so
endif
文件:./opencore-amr/amrwb/Makefile
install: libopencore-amrwb.a $(SHLIB)
install -d $(DESTDIR)$(PREFIX)/lib
install -m 644 libopencore-amrwb.a $(DESTDIR)$(PREFIX)/lib
# install $(SHLIB) $(DESTDIR)$(PREFIX)/lib
ifneq ($(shell uname), Darwin)
# ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)
# ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/lib/libopencore-amrwb.so
endif
切换到opencore-amr目录:D:\ffmpeg\opencore-amr-0.1.2
$ cd /d
$ cd ffmpeg
$ cd opencore-amr-0.1.2
再执行以下命令:
$./configure --disable-shared
$ make CC=gcc
$ make install
编译结果在:C:\MinGW\msys\1.0\local目录下
vo-amrwbenc-0.1.1.tar.gz 接压到:D:\ffmpeg\ 目录下,双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。切换到vo-amrwbenc目录:D:\ffmpeg\vo-amrwbenc-0.1.1
$ cd /d
$ cd ffmpeg
$ cd vo-amrwbenc-0.1.1
再执行以下命令:
$./configure --disable-shared
$ make CC=gcc
$ make install
编译结果在:C:\MinGW\msys\1.0\local目录下
13 编译SDL(可选项)
SDL-1.2.14.tar.tar 解压到:D:\ffmpeg\ 目录下, 双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,切换到SDL目录:D:\ffmpeg\SDL-1.2.14,切换方法如下:
$ cd /d
$ cd ffmpeg
$ cd SDL-1.2.14
再执行以下命令:
./configure
make
make install
编译结果在:C:\MinGW\msys\1.0\local目录下

注意:如果是使用编译好的SDL-devel-1.2.14-mingw32.tar.tar,那么就可以省掉上面的编译工作,直接解压SDL-devel-1.2.14-mingw32.tar.tar文件即可。自己编译或直接使用编译好的都需要做下面的修改和拷贝工作。
使用UltraEdit打开C:\MinGW\msys\1.0\local\bin下的sdl-config文件
把prefix=/usr 该成: prefix=c:/mingw
其中:c:/mingw为mingw的安装路径,请根据你的安装进行修改。为了编译时msys能识别sdl并开启 SDLsupport yes 进行编译,请把C:\MinGW\msys\1.0\local编译结果bin、include和lib中有关sdl的拷贝一份到C:\MinGW\的对应目录中。
14 拷贝编译结果
C:\MinGW\msys\1.0\local 到D:\ffmpeg\ffmpeg-0.8.6
bin拷贝到 bin中
include拷贝到 include中
lib拷贝到 lib中
当然该拷贝过程你可以不做,只要在编译的时候把路径指到:C:\MinGW\msys\1.0\local里面。
15 编译 ffmpeg
ffmpeg-0.8.6.tar.bz2 解压到:D:\ffmpeg\ 目录下,双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,切换到ffmpeg目录:D:\ffmpeg\ffmpeg-0.8.6,切换方法如下:
$ cd /d
$ cd ffmpeg
$ cd ffmpeg-0.8.6
如果你的“MinGW32”没有关闭,可以直接切换路径到:D:\ffmpeg\ffmpeg-0.8.6。
再执行以下命令:
$ ./configure --enable-shared --disable-static --enable-ffplay
--enable-nonfree --enable-memalign-hack
--enable-libmp3lame
--enable-gpl--enable-libx264
--enable-libxvid
--enable-faad (HGH MARKffmpeg 1.0.1没有这项)

--enable-libfaac
--enable-libvo-aacenc
--enable-version3 --enable-libopencore-amrnb
--enable-libopencore-amrwb --enable-libvo-amrwbenc
--extra-cflags=-Id:/ffmpeg/ffmpeg-0.8.6/include  (HGH MARK注意是include的首字母大写)
--extra-ldflags=-Ld:/ffmpeg/ffmpeg-0.8.6/lib (HGH MARK注意是lib的首字母大写)
请耐心等待一段时间,以上命令不能直接换行哦并且根据ffmpeg的版本不同有所变化,具体看./configure--help,你知道的。。。
$ make
需要等待很长一段时间,等待编译结束。
为了汇总编译结果,请继续执行以下命令:
$ make install
等待完成,在C:\MinGW\msys\1.0\local中将会生成 bin、include、lib等文件夹,其中包含了ffmpeg.exe、ffplay.exe、ffprobe.exe、dll、lib和头文件等。

HGH MARK:

按照以上方式编译后可能会没有ffplay.exe,需要参照http://blog.csdn.net/cherayliu/article/details/7486378。确认Makefile中指定的config.mak(在ffmpeg根目录下)中:CONFIG_FFPLAY=yes,有感叹号则去掉,然后重新make,不用再次./configure,不然又会恢复回去。
若提示找不到SDL.h,则将include里面的SDL文件里的文件剪切到上一级目录,也就是去除SDL目录。

编译出来的ffplay可以播放音频,却不能播放视频,不知道为什么?求教高手。

16 运行测试
直接双击运行”ffplay.exe”,如果提示没有“pthreadGC2.dll”文件,你可以包“pthreadGC2.dll”直接拷贝到当前目录,也可放到系统目录C:\WINDOWS\system32中。

ffplayf:/xxx.mp4


参考:
http://blog.csdn.net/yangshu168/archive/2010/01/17/5204269.aspx
http://blog.csdn.net/himulakensin/article/details/6693457
http://blog.csdn.net/huangxiansheng1980/article/details/5712003

 

HGH MARK

如何加入eclipse CDT调试?

1.参考http://blog.csdn.net/yunwuxin009/article/details/7336324设置MINGW的环境变量。

2.直接导入编好的ffmpeg的makefile工程会有CDT。。。NullPoint Exception(具体提示忘了)错误,正确的方法应该是,新建一个C++的makefile工程,然后把编译好的ffmpeg项目里的所有文件拷贝到这个新建的makefile工程里。

3.右击debug as ->选择ffplay_g.exe或者ffmpeg_g.exe,可以Debug Configurations里添加运行参数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以按照以下步骤来在Windows使用MinGW编译FFmpeg: 1. 安装MinGW 首先需要安装MinGW,可以从官网下载安装包并进行安装。 2. 安装MSYS MSYS是提供了类Unix操作系统的环境,可以在Windows使用类Unix的命令和工具。可以从官网下载MSYS安装包并进行安装。 3. 下载FFmpeg源代码 从FFmpeg官网下载最新的源代码。 4. 配置环境变量 将MinGWMSYS的安装路径添加到系统环境变量中。 5. 进入MSYS的命令行界面 打开MSYS的命令行界面,进入FFmpeg源代码所在的目录。 6. 配置编译参数 运行以下命令来配置编译参数: ``` ./configure --enable-shared --disable-static --disable-doc --disable-ffplay --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-iconv --disable-bzlib --disable-zlib --prefix=/usr/local/ffmpeg ``` 这里的参数意义如下: - --enable-shared:编译生成共享库。 - --disable-static:禁止编译生成静态库。 - --disable-doc:禁止生成文档。 - --disable-ffplay:禁止编译生成ffplay播放器。 - --disable-ffmpeg:禁止编译生成ffmpeg命令行工具。 - --disable-ffprobe:禁止编译生成ffprobe工具。 - --disable-ffserver:禁止编译生成ffserver工具。 - --disable-iconv:禁止使用iconv编码转换库。 - --disable-bzlib:禁止使用bzlib库。 - --disable-zlib:禁止使用zlib库。 - --prefix=/usr/local/ffmpeg:指定安装目录。 7. 编译和安装 运行以下命令来编译和安装: ``` make && make install ``` 编译完成后,FFmpeg将会被安装到/usr/local/ffmpeg目录下。 以上就是在Windows使用MinGW编译FFmpeg的步骤,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值