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

Posted

技术标签:

【中文标题】Windows Xp - 无法找到入口点 gettickcount64 kernel32.dll【英文标题】:Windows Xp - entry point gettickcount64 could not be located 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 还是使用了预构建的? 我用的是预建的。 【参考方案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的库。

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

【讨论】:

以上是关于Windows Xp - 无法找到入口点 gettickcount64 kernel32.dll的主要内容,如果未能解决你的问题,请参考以下文章

cwindows应用程序的唯一入口点是

无法找到入口点 (cpp)

无法在 DLL 中找到入口点

QtWebEngineProcess无法找到入口

System.EntryNotFoundException:无法在 DLL 中找到入口点

手动脱壳中找到入口点后怎么做