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

原文地址:https://www.cnblogs.com/dilex/p/9211532.html