• 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

  • 相关阅读:
    《构建之法》阅读有疑 与 个人Week1作业
    版本管理和项目管理软件浅谈
    [2019BUAA软工助教]第0次个人作业
    [2017BUAA软工助教]博客格式的详细说明
    [2017BUAA软工助教]收集个人信息
    最长英文单词串题目分析
    蓝桥杯PREV-11:横向打印二叉树
    day2
    冯如杯day1
    个人阅读作业
  • 原文地址:https://www.cnblogs.com/dilex/p/9211532.html
Copyright © 2020-2023  润新知