Windows Xp-找不到入口点gettickcount64 kernel32.dll

时间:2019-01-04 13:06:57

标签: c++ c curl visual-c++ libcurl

我已经使用Curl库(Cpp编程)创建了HTTP POST请求。

配置:

Visual studio 2017
Platform Toolset : Visual Studio 2015 - Windows XP (v140_xp) 

当我在Windows XP系统上运行exe时,会引发以下异常:

the procedure entry point gettickcount64 could not be located kernel32.dll

我的代码:

#include <curl/curl.h>

int main()
{
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();

    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
    curl_easy_setopt(curl, CURLOPT_URL, "xxxxxx");

    struct curl_slist *headers = NULL;

    headers = curl_slist_append(headers, "Content-Type: application/json");
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\n\t\"UserName\":\"abc\", \n\t\"Password\":\"xyz\"\n}");
    CURLcode ret = curl_easy_perform(curl);

    curl_easy_cleanup(curl);
    return 0;
}

那么,如何解决该错误?请帮忙。预先感谢。

2 个答案:

答案 0 :(得分:2)

我想您已经从网站的“下载”部分使用了libcurl的预构建版本。我自己从来没有遇到过这个问题,但是由于GetTickCount64是Windows Vista + API,这意味着他们还没有编译具有Windows XP兼容性的库。

尝试自己构建库,然后查看程序是否运行有任何问题。

答案 1 :(得分:1)

来自[MS.Docs]: GetTickCount64 function要求部分):

  

支持的最低客户端 Windows Windows Vista UWP应用]

替代品:

  • 不要在 XP MS 不再支持它)上运行它,切换到具有该功能的 Vista (或更高版本)在 kernel32.dll 中(最明显的一个)
  • 如果您使用的是下载的 curl (预构建)库:

    • 使用与您的应用相同的工具来重建它,之一:

      • #define _WIN32_WINNT 0x0501

      • /D_WIN32_WINNT=0x0501传递给编译器

  • 如果直接包含 curl 源,请在 VStudio 项目中指定上述编译器标志([MS.Docs]: /D (Preprocessor Definitions)
  • 浏览官方下载页面([curl]: Releases and Downloads)时,我发现 [WinampPlugins]: curl 7.53.1 for Windows。因此,很显然,可以下载与 XP 兼容的二进制文件。它是一个较旧的版本,并且仅 32位 64位 XP 很少见),但是它可以帮助您< / strong>