zoukankan      html  css  js  c++  java
  • mingw64环境搭建

    1.首先下载mingw64,  https://nchc.dl.sourceforge.net/project/mingw/Installer/mingw-get-setup.exe

    下载下来后直接双击安装, 

    2. 下载msys. http://www.mingw.org/wiki/MSYS/,我下载的是1.0.11版本的。直接点击安装,我安装在C盘,安装过程中会有一些提示,yes就行,最后需要配置一个mingw的环境变量,我配置的是上图中的地址C:/mingw-w64/x86_64-4.9.2-posix-seh-rt_v3-rev1/mingw64,(注意正反斜杠啊)可能他会提示错误,说找不到路径之类的,不要管他,暴力一点,直接到C:msys1.0etc目录,复制fstab.sample为fstab,然后编辑如下图:

    接着编辑C:msys1.0msys.bat文件,在开头加上call "D:Program Files (x86)Microsoft Visual Studio 10.0VCinamd64vcvars64.bat"在这样环境变量就配置好了。

     
    二、相关环境
    windows7 x64旗舰版。
    VS2010(打了SP1补丁)
    Mingw-get-inst-20120426
    yasm-1.2.0-win64
    ffmpeg-2.0.1
    lame-3.99.5
    x264
    xvidcore-1.3.2
    faad2-2.7
    faac-1.28
    vo-aacenc-0.1.2
    opencore-amr-0.1.3
    vo-amrwbenc-0.1.2
     
     
    三、编译前准备
    您最好新建一个目录专门用来保存以下下载的文件。
    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 a direct link, or try another mirror.
        C 点击“direct link”下载类似:mingw-get-inst-20120426.exe 的文件
        提示:msys此处就不用再下载了,mingw-get-inst-20120426.exe 中已经包含了msys1.0,后面安装的时候就可以看到该选项。
    2 下载 yasm(汇编编译器)
        ffmpeg编译的时候里面的汇编代码需要yasm.exe
        去官网:http://yasm.tortall.net/Download.html 下载
        文件名类似为:yasm-1.2.0-win64.exe(如果是64位系统下载32位版本yasm-1.2.0-win32.exe)
    3 下载 ffmpeg
        ffmpeg可以到 http://www.ffmpeg.org/releases/ 下载
        选择的一个最新版本下载即可,如:ffmpeg-2.0.1.tar.gz
        文件名类似为:ffmpeg-2.0.1.tar.gz
        当然你也使用网上介绍的使用SVN直接下载源代码的方法。 
        svn://svn.mplayerhq.hu/ffmpeg/trunk
    4 下载 mp3lame(支持mp3,可选项)
        为了让编译出来的ffmpeg支持对mp3格式的编解码,您需要先下载lame。
        到:http://sourceforge.net/projects/lame/files/ 下载
        文件名类似为:lame-3.99.5.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 下载 faac(支持faac,可选项)
        到:http://www.audiocoding.com/downloads.html 下载:Version 1.28 bootstrapped TAR.GZ Package
        文件名类似为:faac-1.28.tar.gz 的包。
    8 下载 aacenc(支持aac,可选项)
        到:http://sourceforge.net/projects/opencore-amr/files/ 下载:vo-aacenc
        文件名类似为:vo-aacenc-0.1.2.tar.gz 的包。
    9 下载 opencore-amr与vo-amrwbenc (支持3gp,可选项)
        到:http://sourceforge.net/projects/opencore-amr/files/ 下载:opencore-amr 与 vo-amrwbenc
        文件名类似为:opencore-amr-0.1.3.tar.gz 与vo-amrwbenc-0.1.2.tar.gz 的包。
    10 下载 SDL(支持SDL,可选项)
        SDL下载可以到:http://www.libsdl.org/download-1.2.php
        在Source Code栏选择类似:SDL-1.2.15.tar.gz - GPG signed 进行下载,
        文件名类似为:SDL-1.2.15.tar.gz,此文件需要编译才能生成lib库。
     

    四 编译步骤
    1 安装 mingw 和 msys
        执行下载文件:mingw-get-inst-20120426.exe,
        在第3步选择“Download latest repository catalogues”
        选择安装路径:D:FilesMinGW
        在“Select Components”步骤中选择:
          √  C Compiler (默认且一定选择)
          √  C++ Compiler
          √  MSYS Basic System(选择此项将会安装msys,msys则不需要另外安装)
          √  MinGW Developer ToolKit
        等待安装完成!(需要等待一定的时间,因为安装过程需要下载文件,可想而知,网速越快,安装越快)
        安装完成后,在D:FilesMinGW目录下可以看到 msys 文件夹,msys也已经安装。

    2 配置 msys.bat 批处理文件
        为了方便VS2010调用ffmpeg的动态库,可以通过配置让ffmpeg编译时产生windows下调用dll对应的lib,当然,如果你没有这个需要,那么就可以省略以下处理,直接进入步骤3。
        进入:D:FilesMinGWmsys1.0文件夹,使用UltraEdit打开msys.bat文件,在文件的最最前面加入如下一行:

        call "D:FilesMicrosoft Visual Studio 10.0VCinvcvars32.bat"
        添加后效果如下:
         
    复制代码
     1 call "D:Program FilesMicrosoft Visual Studio 10.0VCinvcvars32.bat"
     2          @echo off
     3          rem Copyright (C):  2001, 2002, 2003, 2004, 2005  Earnie Boyd
     4          rem   mailto:earnie@users.sf.net
     5          rem This file is part of Minimal SYStem
     6          rem   http://www.mingw.org/msys.shtml
     7          rem
     8          rem File:     msys.bat
     9          rem Revision:     2.4
    10          rem Revision Date:  December 8th, 2005
    11          rem ember to set the "Start in:" field of the shortcut.
    12          rem A value similar to C:msys1.0in is what the "Start in:" field needs
    13          rem to represent.
    复制代码

        其中“D:FilesMicrosoft Visual Studio 10.0”为你机器上安装VS2010的目录安装在了D盘。文件修改后保存即可。

    3 系统整合
        使用UltraEdit修改D:FilesMinGWmsys1.0etc目下的fstab文件,修改其内容为:D:/Files/MinGW,也即为MinGW的安装路径。
     
    4 添加环境变量
       在环境变量PATH前面添加 D:FilesMinGWmsys1.0in;

    4 配置 yasm
        为了减少配置环境变量的麻烦,本处直接把yasm-1.1.0-win64.exe 文件名修改成:yasm.exe,并放到目录:D:FilesMinGWmsys1.0in

    5 编译 mp3lame(可选项)
        lame-3.99.5.tar.gz 接压到:D:Libraryffmpeg 目录下,双击“D:FilesMinGWmsys1.0msys.bat”,启动“MinGW32”,切换到lame目录:D:ffmpeg lame-3.99.5
        $ cd /d
        $ cd Library/ffmpeg/lame-3.99.5
        再执行以下命令:
        $./configure --disable-shared (首选)
         $ make
         $ make install
        编译结果在:D:FilesMinGWmsys1.0local 目录下
    6 编译 x264(可选项)
        last_x264.tar.bz2 接压到:D:Libraryffmpeg 目录下,双击“D:FilesMinGWmsys1.0msys.bat”,启动“MinGW32”,切换到x264目录:D: Libraryffmpegx264-snapshot-20130630-2245
        $ cd /d
        $ cd Library/ffmpeg/x264-snapshot-20130630-2245
        再执行以下命令:
        $./configure --enable-shared --disable-asm
        用UE打开config.mak文件,修改:(64位系统)
        CFLAGS=-Wshadow -O3 -ffast-math -m32  -Wall -I. -I$(SRCPATH) -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize -fno-zero-initialized-in-bss
        为:
        CFLAGS=-Wshadow -O3 -ffast-math -m32  -Wall -I. -I$(SRCPATH) -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize -fno-zero-initialized-in-bss -march=i686
        $ make
        $ make install
        编译结果在:D:FilesMinGWmsys1.0local 目录下
    7 编译 Xvid(可选项)
        xvidcore-1.3.2.tar.gz 接压到:D:FilesLibraryffmpeg 目录下,双击“D:FilesMinGWmsys1.0msys.bat”,启动“MinGW32”,切换到xvidcore目录:D: FilesLibraryffmpegxvidcoreuildgeneric
        $ cd /d
        $ cd Files/Library/ffmpeg/xvidcore/build/generic
        再执行以下命令:
        $./configure --prefix=d:/Files/MinGW/msys/1.0/local
        $ make
        $ make install
        编译结果在:D:FilesMinGWmsys1.0local 目录下。
        需要注意的就是:此处编译加上了路径
        如果make时出现:cc1.exe: error: unrecognized command line option '-mno-cygwin' 错误,请在./configure后make之前修改xvidcoreuildgeneric里的 platform.inc文件,直接删除里面的“-mno-cygwin”。

    8 编译faac(可选项)
        faac-1.28.tar.gz 接压到:D:FilesLibraryffmpeg 目录下,双击“D:FilesMinGWmsys1.0msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。切换到 faac目 录:D:FilesLibraryffmpegfaac-1.28
        将我提供的目录中的文件faac-1.28.diff拷贝到D:FilesLibraryffmpegfaac-1.28目录下,此文件是补丁文件,不然编译无法通过。
        $ cd /d
        $ cd FilesLibraryffmpegfaac-1.28
        再执行以下命令:
        $ patch -p1 < faac-1.28.diff
        $./bootstrap
        $./configure --disable-static --enable-shared
        $ make
        $ make install
        编译结果在:D:FilesMinGWmsys1.0local 目录下
     
       不用编译faad2,新版本ffmpeg内置已经支持aac编码、解码,不需要libfaac、libfaad了,而且libfaac是nonfree的,nonfree是unredistributable即禁止发布。

    9 编译vo-aacenc (可选项)
        vo-aacenc-0.1.2.tar.gz 接压到:D:FilesLibraryffmpeg 目录下,双击“D:FilesMinGWmsys1.0msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。切换到 vo- aacenc目录:D:FilesLibraryffmpegvo-aacenc-0.1.2
        $ cd /d
        $ cd FilesLibraryffmpegvo-aacenc-0.1.2
        $ cd vo-aacenc-0.1.2
        再执行以下命令:
        $./configure --disable-shared
        $ make
        $ make install
        编译结果在:D:FilesMinGWmsys1.0local 目录下
     
    10 编译opencore-amr 和vo-amrwbenc (可选项)
        opencore-amr-0.1.3.tar.gz 接压到:D:FilesLibraryffmpeg 目录下,双击“D:FilesMinGWmsys1.0msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。
        切换到opencore-amr目录:D:FilesLibraryffmpegopencore-amr-0.1.3
        $ cd /d
        $ cd FilesLibraryffmpegopencore-amr-0.1.3
        再执行以下命令:
        $./configure --disable-shared
        $ make CC=gcc
        $ make install
        编译结果在:D:FilesMinGWmsys1.0local 目录下
        vo-amrwbenc-0.1.2.tar.gz 接压到: D:FilesLibraryffmpeg 目录下,双击“D:FilesMinGWmsys1.0msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。切换到vo-amrwbenc目录:D:FilesLibraryvo-amrwbenc-0.1.2
        $ cd /d
        $ cd FilesLibraryvo-amrwbenc-0.1.2
        再执行以下命令:
        $./configure --disable-shared
        $ make CC=gcc
        $ make install
        编译结果在:D:FilesMinGWmsys1.0local 目录下

    11 编译SDL(可选项)
       SDL-1.2.15.tar.tar 解压到:D:FilesLibraryffmpeg 目录下, 双击“D:FilesMinGWmsys1.0msys.bat”,启动“MinGW32”,切换到SDL目录:D:ffmpegSDL- 1.2.15,切换方法如下:
        $ cd /d
        $ cd FilesLibraryffmpeg
        $ cd SDL-1.2.15
        再执行以下命令:
        ./configure
        make
        make install
        编译结果在:D:FilesMinGWmsys1.0local 目录下 
     
        使用UltraEdit打开D:FilesMinGWmsys1.0localin下的 sdl-config文件
        把 prefix=/usr/local 该成: prefix=d:/Files/MinGW
        其中:D:/Files/MinGW 为 mingw的安装路径,请根据你的安装进行修改。为了编译时msys能识别sdl并开启 SDL support yes 进行编译,请把D:FilesMinGWmsys1.0local编译结果bin、include和lib中有关sdl的拷贝一份到D: FilesMinGW的对 应目录中。

    12 编译 ffmpeg
        安装下载pkg-config for MinGW/msys
         安装方法:把pkg-config.exe 和 libglib-2.0-0.DLL复制到环境变量包括的任意一个文件夹内,我是复制到MinGW安装路径msys1.0in
        ffmpeg-2.0.1.tar.gz 解压到:D:FilesLibraryffmpeg 目录下,双击“D:FilesMinGWmsys1.0msys.bat”,启动“MinGW32”,切换到ffmpeg目录:D:FilesLibraryffmpegffmpeg-2.0.1,切换方法如下:
        $ cd /d
        $ cd FilesLibraryffmpegffmpeg-2.0.1
        再执行以下命令:
        $ ./configure --enable-shared --disable-static --enable-ffplay
        --enable-nonfree --enable-memalign-hack
        --enable-libmp3lame
        --enable-gpl
        --enable-libx264  
        --enable-libxvid 
        --enable-libfaac
        --enable-libvo-aacenc
        --enable-version3 
        --enable-libopencore-amrnb  
        --enable-libopencore-amrwb 
        --enable-libvo-amrwbenc
        --extra-cflags=-Id:/Files/MinGW/msys/1.0/local/include
        --extra-ldflags=-Ld:/Files/MinGW/msys/1.0/local/lib
        --cpu=i686
        注:如果64位系统不添加"--cpu=i686" 编译过程中会报 Threading is enabled, but there is no implementation of atomic operations available。        

        请耐心等待一段时间,以上命令不能直接换行哦并且根据ffmpeg的版本不同有所变化,具体看./configure --help,你知道的。。。
        $ make
        需要等待很长一段时间,等待编译结束。
        为了汇总编译结果,请继续执行以下命令:
        $ make install
        等待完成,在d:/Files/Library/ffmpeg/ffmpeg-2.0.1中将会生成 bin、include、lib等文件夹,其中包含了ffmpeg.exe、ffplay.exe、ffprobe.exe、dll、lib和头文件等。
     
    13 运行测试
      确实以下dll:
      libx264-133.dll 和 sdl.dll在 D:FilesMinGWmsys1.0localin找到。
      xvidcore.dll在D:FilesMinGWmsys1.0locallib 找到。
      pthreadGC2.dll 和 libiconv-2.dll 在D:FilesMinGWin 找到。
     
    14 引用DLL
    提示无法找到"#include <inttypes.h>"。
    创建文件inttypes.h
    复制代码
      1 #ifndef _INTTYPES_H_ALL_  
      2 #define _INTTYPES_H_ALL_  
      3   
      4 // _INTTYPES_H_SYS_: 编译器是否提供了<inttypes.h>  
      5 #undef _INTTYPES_H_SYS_  
      6 #if defined(__GNUC__)    // GCC.  
      7     #define _INTTYPES_H_SYS_  
      8 #elif defined(_MSC_VER)    // MSVC. VC2010仍不支持.  
      9 #elif defined(__BORLANDC__)    // BCB. BCB6仍不支持.  
     10 #else  
     11     #define _INTTYPES_H_SYS_    // 假设其他编译器支持C99.  
     12 #endif    // _INTTYPES_H_SYS_  
     13   
     14   
     15 #ifdef _INTTYPES_H_SYS_  
     16 // 使用编译器提供的<inttypes.h>  
     17 #include <inttypes.h>  
     18 #else  
     19 // 采用自定义的inttypes.h. 参考了 msinttypes: http://code.google.com/p/msinttypes/  
     20   
     21 #ifndef _MSC_INTTYPES_H_ // [  
     22 #define _MSC_INTTYPES_H_  
     23   
     24 #include "stdint.h"  
     25   
     26 // 7.8 Format conversion of integer types  
     27   
     28 typedef struct {  
     29    intmax_t quot;  
     30    intmax_t rem;  
     31 } imaxdiv_t;  
     32   
     33 // 7.8.1 Macros for format specifiers  
     34   
     35 #if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [   See footnote 185 at page 198  
     36   
     37 // The fprintf macros for signed integers are:  
     38 #define PRId8       "d"  
     39 #define PRIi8       "i"  
     40 #define PRIdLEAST8  "d"  
     41 #define PRIiLEAST8  "i"  
     42 #define PRIdFAST8   "d"  
     43 #define PRIiFAST8   "i"  
     44   
     45 #define PRId16       "hd"  
     46 #define PRIi16       "hi"  
     47 #define PRIdLEAST16  "hd"  
     48 #define PRIiLEAST16  "hi"  
     49 #define PRIdFAST16   "hd"  
     50 #define PRIiFAST16   "hi"  
     51   
     52 #if defined(_MSC_VER) && _MSC_VER<=1200    // VC6  
     53 #define PRId32       "d"  
     54 #define PRIi32       "i"  
     55 #define PRIdLEAST32  "d"  
     56 #define PRIiLEAST32  "i"  
     57 #define PRIdFAST32   "d"  
     58 #define PRIiFAST32   "i"  
     59 #else  
     60 #define PRId32       "I32d"  
     61 #define PRIi32       "I32i"  
     62 #define PRIdLEAST32  "I32d"  
     63 #define PRIiLEAST32  "I32i"  
     64 #define PRIdFAST32   "I32d"  
     65 #define PRIiFAST32   "I32i"  
     66 #endif  
     67   
     68 #define PRId64       "I64d"  
     69 #define PRIi64       "I64i"  
     70 #define PRIdLEAST64  "I64d"  
     71 #define PRIiLEAST64  "I64i"  
     72 #define PRIdFAST64   "I64d"  
     73 #define PRIiFAST64   "I64i"  
     74   
     75 #define PRIdMAX     "I64d"  
     76 #define PRIiMAX     "I64i"  
     77   
     78 #define PRIdPTR     "Id"  
     79 #define PRIiPTR     "Ii"  
     80   
     81 // The fprintf macros for unsigned integers are:  
     82 #define PRIo8       "o"  
     83 #define PRIu8       "u"  
     84 #define PRIx8       "x"  
     85 #define PRIX8       "X"  
     86 #define PRIoLEAST8  "o"  
     87 #define PRIuLEAST8  "u"  
     88 #define PRIxLEAST8  "x"  
     89 #define PRIXLEAST8  "X"  
     90 #define PRIoFAST8   "o"  
     91 #define PRIuFAST8   "u"  
     92 #define PRIxFAST8   "x"  
     93 #define PRIXFAST8   "X"  
     94   
     95 #define PRIo16       "ho"  
     96 #define PRIu16       "hu"  
     97 #define PRIx16       "hx"  
     98 #define PRIX16       "hX"  
     99 #define PRIoLEAST16  "ho"  
    100 #define PRIuLEAST16  "hu"  
    101 #define PRIxLEAST16  "hx"  
    102 #define PRIXLEAST16  "hX"  
    103 #define PRIoFAST16   "ho"  
    104 #define PRIuFAST16   "hu"  
    105 #define PRIxFAST16   "hx"  
    106 #define PRIXFAST16   "hX"  
    107   
    108 #if defined(_MSC_VER) && _MSC_VER<=1200    // VC6  
    109 #define PRIo32       "o"  
    110 #define PRIu32       "u"  
    111 #define PRIx32       "x"  
    112 #define PRIX32       "X"  
    113 #define PRIoLEAST32  "o"  
    114 #define PRIuLEAST32  "u"  
    115 #define PRIxLEAST32  "x"  
    116 #define PRIXLEAST32  "X"  
    117 #define PRIoFAST32   "o"  
    118 #define PRIuFAST32   "u"  
    119 #define PRIxFAST32   "x"  
    120 #define PRIXFAST32   "X"  
    121 #else  
    122 #define PRIo32       "I32o"  
    123 #define PRIu32       "I32u"  
    124 #define PRIx32       "I32x"  
    125 #define PRIX32       "I32X"  
    126 #define PRIoLEAST32  "I32o"  
    127 #define PRIuLEAST32  "I32u"  
    128 #define PRIxLEAST32  "I32x"  
    129 #define PRIXLEAST32  "I32X"  
    130 #define PRIoFAST32   "I32o"  
    131 #define PRIuFAST32   "I32u"  
    132 #define PRIxFAST32   "I32x"  
    133 #define PRIXFAST32   "I32X"  
    134 #endif  
    135   
    136 #define PRIo64       "I64o"  
    137 #define PRIu64       "I64u"  
    138 #define PRIx64       "I64x"  
    139 #define PRIX64       "I64X"  
    140 #define PRIoLEAST64  "I64o"  
    141 #define PRIuLEAST64  "I64u"  
    142 #define PRIxLEAST64  "I64x"  
    143 #define PRIXLEAST64  "I64X"  
    144 #define PRIoFAST64   "I64o"  
    145 #define PRIuFAST64   "I64u"  
    146 #define PRIxFAST64   "I64x"  
    147 #define PRIXFAST64   "I64X"  
    148   
    149 #define PRIoMAX     "I64o"  
    150 #define PRIuMAX     "I64u"  
    151 #define PRIxMAX     "I64x"  
    152 #define PRIXMAX     "I64X"  
    153   
    154 #define PRIoPTR     "Io"  
    155 #define PRIuPTR     "Iu"  
    156 #define PRIxPTR     "Ix"  
    157 #define PRIXPTR     "IX"  
    158   
    159 // The fscanf macros for signed integers are:  
    160 #define SCNd8       "d"  
    161 #define SCNi8       "i"  
    162 #define SCNdLEAST8  "d"  
    163 #define SCNiLEAST8  "i"  
    164 #define SCNdFAST8   "d"  
    165 #define SCNiFAST8   "i"  
    166   
    167 #define SCNd16       "hd"  
    168 #define SCNi16       "hi"  
    169 #define SCNdLEAST16  "hd"  
    170 #define SCNiLEAST16  "hi"  
    171 #define SCNdFAST16   "hd"  
    172 #define SCNiFAST16   "hi"  
    173   
    174 #define SCNd32       "ld"  
    175 #define SCNi32       "li"  
    176 #define SCNdLEAST32  "ld"  
    177 #define SCNiLEAST32  "li"  
    178 #define SCNdFAST32   "ld"  
    179 #define SCNiFAST32   "li"  
    180   
    181 #define SCNd64       "I64d"  
    182 #define SCNi64       "I64i"  
    183 #define SCNdLEAST64  "I64d"  
    184 #define SCNiLEAST64  "I64i"  
    185 #define SCNdFAST64   "I64d"  
    186 #define SCNiFAST64   "I64i"  
    187   
    188 #define SCNdMAX     "I64d"  
    189 #define SCNiMAX     "I64i"  
    190   
    191 #ifdef _WIN64 // [  
    192 #  define SCNdPTR     "I64d"  
    193 #  define SCNiPTR     "I64i"  
    194 #else  // _WIN64 ][  
    195 #  define SCNdPTR     "ld"  
    196 #  define SCNiPTR     "li"  
    197 #endif  // _WIN64 ]  
    198   
    199 // The fscanf macros for unsigned integers are:  
    200 #define SCNo8       "o"  
    201 #define SCNu8       "u"  
    202 #define SCNx8       "x"  
    203 #define SCNX8       "X"  
    204 #define SCNoLEAST8  "o"  
    205 #define SCNuLEAST8  "u"  
    206 #define SCNxLEAST8  "x"  
    207 #define SCNXLEAST8  "X"  
    208 #define SCNoFAST8   "o"  
    209 #define SCNuFAST8   "u"  
    210 #define SCNxFAST8   "x"  
    211 #define SCNXFAST8   "X"  
    212   
    213 #define SCNo16       "ho"  
    214 #define SCNu16       "hu"  
    215 #define SCNx16       "hx"  
    216 #define SCNX16       "hX"  
    217 #define SCNoLEAST16  "ho"  
    218 #define SCNuLEAST16  "hu"  
    219 #define SCNxLEAST16  "hx"  
    220 #define SCNXLEAST16  "hX"  
    221 #define SCNoFAST16   "ho"  
    222 #define SCNuFAST16   "hu"  
    223 #define SCNxFAST16   "hx"  
    224 #define SCNXFAST16   "hX"  
    225   
    226 #define SCNo32       "lo"  
    227 #define SCNu32       "lu"  
    228 #define SCNx32       "lx"  
    229 #define SCNX32       "lX"  
    230 #define SCNoLEAST32  "lo"  
    231 #define SCNuLEAST32  "lu"  
    232 #define SCNxLEAST32  "lx"  
    233 #define SCNXLEAST32  "lX"  
    234 #define SCNoFAST32   "lo"  
    235 #define SCNuFAST32   "lu"  
    236 #define SCNxFAST32   "lx"  
    237 #define SCNXFAST32   "lX"  
    238   
    239 #define SCNo64       "I64o"  
    240 #define SCNu64       "I64u"  
    241 #define SCNx64       "I64x"  
    242 #define SCNX64       "I64X"  
    243 #define SCNoLEAST64  "I64o"  
    244 #define SCNuLEAST64  "I64u"  
    245 #define SCNxLEAST64  "I64x"  
    246 #define SCNXLEAST64  "I64X"  
    247 #define SCNoFAST64   "I64o"  
    248 #define SCNuFAST64   "I64u"  
    249 #define SCNxFAST64   "I64x"  
    250 #define SCNXFAST64   "I64X"  
    251   
    252 #define SCNoMAX     "I64o"  
    253 #define SCNuMAX     "I64u"  
    254 #define SCNxMAX     "I64x"  
    255 #define SCNXMAX     "I64X"  
    256   
    257 #ifdef _WIN64 // [  
    258 #  define SCNoPTR     "I64o"  
    259 #  define SCNuPTR     "I64u"  
    260 #  define SCNxPTR     "I64x"  
    261 #  define SCNXPTR     "I64X"  
    262 #else  // _WIN64 ][  
    263 #  define SCNoPTR     "lo"  
    264 #  define SCNuPTR     "lu"  
    265 #  define SCNxPTR     "lx"  
    266 #  define SCNXPTR     "lX"  
    267 #endif  // _WIN64 ]  
    268   
    269 #endif // __STDC_FORMAT_MACROS ]  
    270   
    271 // 7.8.2 Functions for greatest-width integer types  
    272   
    273 // 7.8.2.1 The imaxabs function  
    274 #define imaxabs _abs64  
    275   
    276 // 7.8.2.2 The imaxdiv function  
    277   
    278 #ifdef _MSC_VER  
    279 // This is modified version of div() function from Microsoft's div.c found  
    280 // in %MSVC.NET%crtsrcdiv.c  
    281 #ifdef STATIC_IMAXDIV // [  
    282 static  
    283 #else // STATIC_IMAXDIV ][  
    284 _inline  
    285 #endif // STATIC_IMAXDIV ]  
    286 imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)  
    287 {  
    288    imaxdiv_t result;  
    289   
    290    result.quot = numer / denom;  
    291    result.rem = numer % denom;  
    292   
    293    if (numer < 0 && result.rem > 0) {  
    294       // did division wrong; must fix up  
    295       ++result.quot;  
    296       result.rem -= denom;  
    297    }  
    298   
    299    return result;  
    300 }  
    301 #endif  // #ifdef _MSC_VER  
    302   
    303 // 7.8.2.3 The strtoimax and strtoumax functions  
    304 #define strtoimax _strtoi64  
    305 #define strtoumax _strtoui64  
    306   
    307 // 7.8.2.4 The wcstoimax and wcstoumax functions  
    308 #define wcstoimax _wcstoi64  
    309 #define wcstoumax _wcstoui64  
    310   
    311   
    312 #endif // _MSC_INTTYPES_H_ ]  
    313   
    314 #endif // #ifdef _INTTYPES_H_SYS_  
    315   
    316 #endif // #ifndef _INTTYPES_H_ALL_ 
    复制代码
    参考:http://www.cnblogs.com/zyl910/archive/2012/08/08/c99int.html
     
    将文件放到 D:FilesMicrosoft Visual Studio 10.0VCinclude 目录下,D:FilesMicrosoft Visual Studio 10.0是你VS的安装目录。
  • 相关阅读:
    03.移除相同的元素
    02.计算数组元素之和
    01-找出元素在数组中的位置
    node.js中Content-Type的设置
    node.js接受form表单数据
    node.js创建服务器
    mongoDB笔记
    TDK三大标签SEO(搜索引擎优化)优化
    引入网页图标
    JavaScript实现二叉搜索树
  • 原文地址:https://www.cnblogs.com/endv/p/6833351.html
Copyright © 2011-2022 走看看