zoukankan      html  css  js  c++  java
  • MinGW下编译curl-7.60.0时, 发生ERROR_FILE_NOT_FOUND undeclared

    在编译curl-7.60.0时, 遇到ERROR_FILE_NOT_FOUND undeclared 这个情况, 就没法编译成功!!

    下载了以往的版本, 发现是从curl-7.59.0版本开始才有 tool_filetime.c, 小弟为了项目进度, 当时选择了使用curl-7.58.0版本的

    现在就回过头来研究一下这个问题, 首先, 我们打开tool_filetime.c 这个文件看看其内容, 其中关键的地方是这么一段:

    利用Notopad++在curl-7.60.0整个目录下的所有文件搜索  ERROR_FILE_NOT_FOUND   

    结果会发现只有在tool_filetime.c中的这个位置使用到

    这样修改了其中的ERROR_FILE_NOT_FOUND也不会影响到其他地方, 此时再回过头来看看这段代码的代码, 看其中的注释:

     1 #if defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)
     2   HANDLE hfile;
     3 
     4   hfile = CreateFileA(filename, FILE_READ_ATTRIBUTES,
     5                       (FILE_SHARE_READ | FILE_SHARE_WRITE |
     6                        FILE_SHARE_DELETE),
     7                       NULL, OPEN_EXISTING, 0, NULL);
     8   if(hfile != INVALID_HANDLE_VALUE) {
     9     /*调用CreateFileA函数创建文件句柄,此处句柄有效则执行*/
    10     FILETIME ft;
    11     if(GetFileTime(hfile, NULL, NULL, &ft)) {
    12       curl_off_t converted = (curl_off_t)ft.dwLowDateTime
    13           | ((curl_off_t)ft.dwHighDateTime) << 32;
    14 
    15       if(converted < CURL_OFF_T_C(116444736000000000)) {
    16         fprintf(error_stream,
    17                 "Failed to get filetime: underflow
    ");
    18       }
    19       else {
    20         result = (converted - CURL_OFF_T_C(116444736000000000)) / 10000000;
    21       }
    22     }
    23     else {
    24       fprintf(error_stream,
    25               "Failed to get filetime: "
    26               "GetFileTime failed: GetLastError %u
    ",
    27               (unsigned int)GetLastError());
    28     }
    29     CloseHandle(hfile);
    30   }
    31   else if(GetLastError() != ERROR_FILE_NOT_FOUND) {
    32     /*调用CreateFileA函数创建文件句柄,此处句柄无效则执行*/
    33     /*就是文件句柄创建失败了,就执行下面的代码, 输入一个信息*/
    34     fprintf(error_stream,
    35             "Failed to get filetime: "
    36             "CreateFile failed: GetLastError %u
    ",
    37             (unsigned int)GetLastError());
    38   }
    39 #else

     

    那么上面红框中的代码段, 是否可以修改成如下内容:

    保存后, 尝试编译一下:

    ./configure

    make

    到此就编译成功了, 运行一下:

    ps: 查了一下资料, 在Linux下,  ERROR_FILE_NOT_FOUND 应该是 2的 , 所以可以在代码的前面加一个宏

    #define  ERROR_FILE_NOT_FOUND  2

    ----2018-6-23

  • 相关阅读:
    os 模块1
    除法
    python基础四(jsonossys andomstring模块、文件、函数)
    python基础三(集合、文件)
    linux下mysql安装
    linux下tomcat安装
    linux系统jdk安装
    python基础二(list,tuple元祖、dic字典,字符串)
    python基础一(安装、变量、循环、git)
    charles抓包
  • 原文地址:https://www.cnblogs.com/dilex/p/9211532.html
Copyright © 2011-2022 走看看