Windows Xp - точка входа gettickcount64 не может быть расположена kernel32.dll - PullRequest
0 голосов
/ 04 января 2019

Я создал http POST-запрос, используя библиотеку Curl (Cpp Programming).

Конфигурация:

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

Когда я запускаю exe в системе Windows XP, выдается следующее исключение:

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 голосов
/ 04 января 2019

С [MS.Docs]: функция GetTickCount64 ( Требования * секция 1004 *):

Минимально поддерживаемый клиент Windows Vista [настольные приложения | Приложения UWP]

Альтернативы:

  • Не запускайте его на XP ( MS больше не поддерживает его), переключитесь на Vista (или новее), который имеет функцию в kernel32.dll (наиболее очевидный)
  • Если вы используете загруженную библиотеку curl (prebuilt):

    • Перестройте его, используя те же инструменты, что и ваше приложение, и либо:

      • #define _WIN32_WINNT 0x0501

      • Передача /D_WIN32_WINNT=0x0501 в компилятор

  • Если вы включаете источники curl напрямую, укажите вышеуказанный флаг компилятора в ваш проект VStudio ( [MS.Docs]: / D (Определения препроцессора)
  • При просмотре официальной страницы загрузки ( [curl]: Релизы и загрузки ), Я нашел [WinampPlugins]: curl 7.53.1 для Windows . Очевидно, что можно загрузить двоичный файл, совместимый с XP . Это более старая версия, и только 32 бит ( 64 бит XP s в любом случае редки), но это может помочь вам
0 голосов
/ 04 января 2019

Полагаю, вы использовали предварительно собранную версию libcurl из раздела загрузок сайта. У меня никогда не было этой проблемы, но поскольку GetTickCount64 является Windows Vista + API, это означает, что они не скомпилировали библиотеку с совместимостью с Windows XP.

Попробуйте собрать библиотеку самостоятельно, а затем посмотрите, работает ли ваша программа с какой-либо проблемой или нет.

...