【问题标题】:Windows Xp - entry point gettickcount64 could not be located kernel32.dllWindows Xp - 无法找到入口点 gettickcount64 kernel32.dll
【发布时间】:2019-01-04 13:06:56
【问题描述】:

我使用 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;
}

那么,如何解决这个错误?请帮忙。提前致谢。

【问题讨论】:

  • 您自己构建了libcurl 还是使用了预构建的?
  • 我用的是预建的。

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


【解决方案1】:

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

支持的最低客户端               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 无论如何都很少见),但它可以让你继续前进

【讨论】:

  • 我正在尝试在 XP 上运行游戏,但遇到与本文标题相同的错误。经过一番搜索,我发现游戏文件夹中有一个名为 libcurl.dll 的文件,它调用了这个函数。我试图下载这个与 XP 兼容的二进制文件,但我不知道该怎么做。你能帮帮我吗?
  • @Kobayashi:您需要覆盖(首先备份)您项目中调用此函数的 libcurl.dll 文件。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 2015-09-28
    • 2011-04-14
    • 2011-07-17
    • 2012-09-09
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多