亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dll_faq.txt

?? ZIP壓縮算法源代碼,可以直接加入C++Project中編譯調用
?? TXT
?? 第 1 頁 / 共 2 頁
字號:

            Frequently Asked Questions about ZLIB1.DLL


This document describes the design, the rationale, and the usage
of the official DLL build of zlib, named ZLIB1.DLL.  If you have
general questions about zlib, you should see the file "FAQ" found
in the zlib distribution, or at the following location:
  http://www.gzip.org/zlib/zlib_faq.html


 1. What is ZLIB1.DLL, and how can I get it?

  - ZLIB1.DLL is the official build of zlib as a DLL.
    (Please remark the character '1' in the name.)

    Pointers to a precompiled ZLIB1.DLL can be found in the zlib
    web site at:
      http://www.zlib.org/

    Applications that link to ZLIB1.DLL can rely on the following
    specification:

    * The exported symbols are exclusively defined in the source
      files "zlib.h" and "zlib.def", found in an official zlib
      source distribution.
    * The symbols are exported by name, not by ordinal.
    * The exported names are undecorated.
    * The calling convention of functions is "C" (CDECL).
    * The ZLIB1.DLL binary is linked to MSVCRT.DLL.

    The archive in which ZLIB1.DLL is bundled contains compiled
    test programs that must run with a valid build of ZLIB1.DLL.
    It is recommended to download the prebuilt DLL from the zlib
    web site, instead of building it yourself, to avoid potential
    incompatibilities that could be introduced by your compiler
    and build settings.  If you do build the DLL yourself, please
    make sure that it complies with all the above requirements,
    and it runs with the precompiled test programs, bundled with
    the original ZLIB1.DLL distribution.

    If, for any reason, you need to build an incompatible DLL,
    please use a different file name.


 2. Why did you change the name of the DLL to ZLIB1.DLL?
    What happened to the old ZLIB.DLL?

  - The old ZLIB.DLL, built from zlib-1.1.4 or earlier, required
    compilation settings that were incompatible to those used by
    a static build.  The DLL settings were supposed to be enabled
    by defining the macro ZLIB_DLL, before including "zlib.h".
    Incorrect handling of this macro was silently accepted at
    build time, resulting in two major problems:

    * ZLIB_DLL was missing from the old makefile.  When building
      the DLL, not all people added it to the build options.  In
      consequence, incompatible incarnations of ZLIB.DLL started
      to circulate around the net.

    * When switching from using the static library to using the
      DLL, applications had to define the ZLIB_DLL macro and
      to recompile all the sources that contained calls to zlib
      functions.  Failure to do so resulted in creating binaries
      that were unable to run with the official ZLIB.DLL build.

    The only possible solution that we could foresee was to make
    a binary-incompatible change in the DLL interface, in order to
    remove the dependency on the ZLIB_DLL macro, and to release
    the new DLL under a different name.

    We chose the name ZLIB1.DLL, where '1' indicates the major
    zlib version number.  We hope that we will not have to break
    the binary compatibility again, at least not as long as the
    zlib-1.x series will last.

    There is still a ZLIB_DLL macro, that can trigger a more
    efficient build and use of the DLL, but compatibility no
    longer dependents on it.


 3. Can I build ZLIB.DLL from the new zlib sources, and replace
    an old ZLIB.DLL, that was built from zlib-1.1.4 or earlier?

  - In principle, you can do it by assigning calling convention
    keywords to the macros ZEXPORT and ZEXPORTVA.  In practice,
    it depends on what you mean by "an old ZLIB.DLL", because the
    old DLL exists in several mutually-incompatible versions.
    You have to find out first what kind of calling convention is
    being used in your particular ZLIB.DLL build, and to use the
    same one in the new build.  If you don't know what this is all
    about, you might be better off if you would just leave the old
    DLL intact.


 4. Can I compile my application using the new zlib interface, and
    link it to an old ZLIB.DLL, that was built from zlib-1.1.4 or
    earlier?

  - The official answer is "no"; the real answer depends again on
    what kind of ZLIB.DLL you have.  Even if you are lucky, this
    course of action is unreliable.

    If you rebuild your application and you intend to use a newer
    version of zlib (post- 1.1.4), it is strongly recommended to
    link it to the new ZLIB1.DLL.


 5. Why are the zlib symbols exported by name, and not by ordinal?

  - Although exporting symbols by ordinal is a little faster, it
    is risky.  Any single glitch in the maintenance or use of the
    DEF file that contains the ordinals can result in incompatible
    builds and frustrating crashes.  Simply put, the benefits of
    exporting symbols by ordinal do not justify the risks.

    Technically, it should be possible to maintain ordinals in
    the DEF file, and still export the symbols by name.  Ordinals
    exist in every DLL, and even if the dynamic linking performed
    at the DLL startup is searching for names, ordinals serve as
    hints, for a faster name lookup.  However, if the DEF file
    contains ordinals, the Microsoft linker automatically builds
    an implib that will cause the executables linked to it to use
    those ordinals, and not the names.  It is interesting to
    notice that the GNU linker for Win32 does not suffer from this
    problem.

    It is possible to avoid the DEF file if the exported symbols
    are accompanied by a "__declspec(dllexport)" attribute in the
    source files.  You can do this in zlib by predefining the
    ZLIB_DLL macro.


 6. I see that the ZLIB1.DLL functions use the "C" (CDECL) calling
    convention.  Why not use the STDCALL convention?
    STDCALL is the standard convention in Win32, and I need it in
    my Visual Basic project!

    (For readability, we use CDECL to refer to the convention
     triggered by the "__cdecl" keyword, STDCALL to refer to
     the convention triggered by "__stdcall", and FASTCALL to
     refer to the convention triggered by "__fastcall".)

  - Most of the native Windows API functions (without varargs) use
    indeed the WINAPI convention (which translates to STDCALL in
    Win32), but the standard C functions use CDECL.  If a user
    application is intrinsically tied to the Windows API (e.g.
    it calls native Windows API functions such as CreateFile()),
    sometimes it makes sense to decorate its own functions with
    WINAPI.  But if ANSI C or POSIX portability is a goal (e.g.
    it calls standard C functions such as fopen()), it is not a
    sound decision to request the inclusion of <windows.h>, or to
    use non-ANSI constructs, for the sole purpose to make the user
    functions STDCALL-able.

    The functionality offered by zlib is not in the category of
    "Windows functionality", but is more like "C functionality".

    Technically, STDCALL is not bad; in fact, it is slightly
    faster than CDECL, and it works with variable-argument
    functions, just like CDECL.  It is unfortunate that, in spite
    of using STDCALL in the Windows API, it is not the default
    convention used by the C compilers that run under Windows.
    The roots of the problem reside deep inside the unsafety of
    the K&R-style function prototypes, where the argument types
    are not specified; but that is another story for another day.

    The remaining fact is that CDECL is the default convention.
    Even if an explicit convention is hard-coded into the function
    prototypes inside C headers, problems may appear.  The
    necessity to expose the convention in users' callbacks is one
    of these problems.

    The calling convention issues are also important when using
    zlib in other programming languages.  Some of them, like Ada
    (GNAT) and Fortran (GNU G77), have C bindings implemented
    initially on Unix, and relying on the C calling convention.
    On the other hand, the pre- .NET versions of Microsoft Visual
    Basic require STDCALL, while Borland Delphi prefers, although
    it does not require, FASTCALL.

    In fairness to all possible uses of zlib outside the C
    programming language, we choose the default "C" convention.
    Anyone interested in different bindings or conventions is
    encouraged to maintain specialized projects.  The "contrib/"
    directory from the zlib distribution already holds a couple
    of foreign bindings, such as Ada, C++, and Delphi.


 7. I need a DLL for my Visual Basic project.  What can I do?

  - Define the ZLIB_WINAPI macro before including "zlib.h", when
    building both the DLL and the user application (except that
    you don't need to define anything when using the DLL in Visual
    Basic).  The ZLIB_WINAPI macro will switch on the WINAPI
    (STDCALL) convention.  The name of this DLL must be different
    than the official ZLIB1.DLL.

    Gilles Vollant has contributed a build named ZLIBWAPI.DLL,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品伊人久久久久av一坑| 亚洲欧洲av在线| 99在线精品视频| 天堂精品中文字幕在线| 国产日韩高清在线| 欧美日韩高清在线播放| 丰满白嫩尤物一区二区| 免费视频最近日韩| 夜色激情一区二区| 中文一区二区在线观看| 日韩欧美精品在线| 欧美视频中文一区二区三区在线观看 | 欧美激情中文字幕一区二区| 色综合色综合色综合色综合色综合| 青青草97国产精品免费观看无弹窗版| 中文字幕亚洲一区二区va在线| 欧美电视剧免费观看| 欧美视频在线一区| 91精彩视频在线| 北条麻妃国产九九精品视频| 国内精品国产三级国产a久久| 亚洲国产一二三| 一区二区三区高清不卡| 欧美aaaaaa午夜精品| 日韩三级伦理片妻子的秘密按摩| 国产剧情一区在线| 午夜久久久久久久久久一区二区| 亚洲老妇xxxxxx| 国产精品久久国产精麻豆99网站| 久久精品人人做人人爽人人| 日韩视频免费观看高清完整版在线观看 | 欧美不卡激情三级在线观看| 欧美日韩国产首页在线观看| 色一情一乱一乱一91av| av电影在线观看不卡| 成人综合婷婷国产精品久久免费| 国产麻豆精品在线| 国产福利91精品一区| 狠狠v欧美v日韩v亚洲ⅴ| 精品一区二区三区在线播放视频| 久久久亚洲午夜电影| 26uuu国产电影一区二区| 欧美电影免费观看高清完整版在| 日韩一级大片在线| 日韩精品一区二区在线| 日韩欧美区一区二| 26uuu精品一区二区在线观看| 日韩精品中文字幕在线一区| 精品国产制服丝袜高跟| 久久久久久99精品| 国产校园另类小说区| 中文子幕无线码一区tr| 日本视频一区二区| 夜夜操天天操亚洲| 日韩中文字幕区一区有砖一区 | 精品在线播放免费| 国产一区亚洲一区| 久久精品国产久精国产爱| 蜜臀久久99精品久久久久久9| 麻豆91精品视频| 国产黄色91视频| 99久久伊人精品| 欧美日韩在线免费视频| 91精品国产91综合久久蜜臀| 精品国产乱码久久久久久闺蜜 | 欧美日韩在线播| 丁香一区二区三区| 亚洲福利电影网| 久久99精品国产麻豆婷婷洗澡| 国产美女一区二区三区| 99久久99久久久精品齐齐| 欧美日韩综合色| 精品国产免费视频| 1024成人网色www| 日韩成人av影视| 成人综合婷婷国产精品久久蜜臀| 91蜜桃传媒精品久久久一区二区| 欧美精品亚洲二区| 国产婷婷色一区二区三区四区| 国产乱码一区二区三区| 精品国产一二三| 亚洲欧美一区二区三区孕妇| 日韩av不卡一区二区| 国产高清不卡二三区| 欧美三级日韩三级国产三级| 国产欧美综合色| 无码av中文一区二区三区桃花岛| 国产成人自拍在线| 在线观看一区二区视频| 国产无一区二区| 丝袜美腿亚洲一区二区图片| 99久久综合国产精品| 日韩免费视频线观看| 日韩二区三区四区| 亚洲线精品一区二区三区八戒| 韩国av一区二区三区| 欧美亚洲一区三区| 欧美韩日一区二区三区四区| 青青草一区二区三区| 天天综合天天做天天综合| 粉嫩13p一区二区三区| 777奇米四色成人影色区| 1024成人网| 高清国产午夜精品久久久久久| 91精品国产综合久久久蜜臀粉嫩| 日韩一区欧美一区| 国产精品亚洲综合一区在线观看| 免费高清在线视频一区·| 色狠狠一区二区| 国产精品乱码一区二三区小蝌蚪| 捆绑紧缚一区二区三区视频| 欧美日韩中文精品| 亚洲欧美激情插| 日韩一区二区三区四区五区六区| 日韩一区二区视频| 日韩综合小视频| 欧美视频在线一区| 亚洲精品久久久久久国产精华液| 成人一区二区三区视频在线观看 | 欧美成人精品二区三区99精品| 亚洲综合丁香婷婷六月香| 不卡欧美aaaaa| 中文字幕不卡在线| 国产一区二区日韩精品| 精品乱人伦小说| 日本三级亚洲精品| 日韩欧美一二三| 免费成人你懂的| 日韩一区二区三区免费看 | 国产乱一区二区| 欧美一卡二卡三卡| 日韩精品国产欧美| 欧美精品第1页| 午夜不卡av免费| 欧美挠脚心视频网站| 日韩二区在线观看| 日韩精品中午字幕| 国产美女主播视频一区| 国产欧美日韩另类一区| 高清国产一区二区| 亚洲视频小说图片| 欧亚洲嫩模精品一区三区| 日韩高清欧美激情| 日韩欧美久久久| 国产精品一区二区果冻传媒| 国产三级欧美三级| 成人av综合一区| 亚洲欧美日韩国产中文在线| 色屁屁一区二区| 五月天精品一区二区三区| 欧美va亚洲va| 波多野结衣亚洲| 亚洲激情在线激情| 欧美精品日韩精品| 韩国三级电影一区二区| 国产精品免费久久久久| 色偷偷成人一区二区三区91| 亚洲制服丝袜av| 欧美一卡2卡三卡4卡5免费| 九一久久久久久| 国产精品久久久久久久久免费桃花| 99精品视频中文字幕| 亚洲gay无套男同| 日韩免费电影网站| a在线欧美一区| 日韩欧美国产综合| 成人动漫一区二区在线| 亚洲精品福利视频网站| 91精品国产高清一区二区三区蜜臀 | 久久精品视频一区| 91最新地址在线播放| 午夜一区二区三区在线观看| 日韩欧美中文字幕公布| 成人免费毛片嘿嘿连载视频| 欧美午夜在线观看| 中文字幕中文字幕在线一区| 欧美亚洲免费在线一区| 久久美女高清视频| 97精品国产97久久久久久久久久久久| 亚洲成人激情综合网| 国产亚洲精品久| 欧美日韩国产免费一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 成人黄页毛片网站| 午夜av电影一区| 国产精品伦理在线| 日韩精品最新网址| 一本色道久久综合精品竹菊| 久久亚洲一区二区三区四区| 色88888久久久久久影院按摩 | 中文字幕综合网| 在线观看91av| 亚洲高清一区二区三区| 久久精品综合网| 欧美一卡二卡三卡四卡| 欧美伊人久久大香线蕉综合69| 国产精品1024久久| 日韩极品在线观看| 亚洲一区二区视频在线| 中文欧美字幕免费|