dll с компиляцией cpprestsdk на windows xp

У меня есть проект dll, использующий cpprestsdk в Visual Studio 2019 (вместе с консольным приложением для целей тестирования). В Windows 7 и Windows 10 исходный пакет работает, как и ожидалось, однако мне трудно скомпилировать и запустить его в Windows XP.

cpprestsdk включается в проект через NuGet, версия: cpprestsdk.v141, но компилятор его не видит. Строка #include <cpprest/http_client.h> выдает ошибку.

Изменения, которые я сделал:

  • набор инструментов платформы установлен на Visual Studio 2017 - Windows XP (v141_xp)
  • определения препроцессора обновлены, чтобы включить CPPREST_TARGET_XP
  • статически включен cpprest141_2_10.dll
  • статически связаны cpprest141_2_10.lib
  • параметр консольного приложения ConformanceMode установлен на false

Теперь приложение компилируется, но не работает должным образом на Windows 10 (вылетает при отправке запроса). и не запускается на windows XP (точка входа dll не найдена)

Кто-нибудь знает, что происходит?

@edit: после добавления в папку с программой отсутствующих dll:

  • api-ms-win-core-crt-l1-1-0.dll
  • api-ms-win-core-crt-l2-1-0.dll
  • httpapi.dll

дело дошло до ntdll.dll

скриншот ошибки "Точка входа не найдена"

The procedure entry point WinSqmAddToStreamEx could not be located in the dynamic link library ntdll.dll


person codewarriorr    schedule 29.09.2020    source источник
comment
Добро пожаловать в Stack Overflow! Вы уверены, что сами библиотеки DLL были созданы для XP? Возможно, для этой платформы и набора инструментов существует другая DLL? Не могли бы вы сами создать библиотеки DLL, чтобы убедиться, что все совпадает?   -  person metal    schedule 29.09.2020
comment
@Michał Mach - Если вы добавите в сообщение подробное описание ошибки, это поможет лучше понять картину.   -  person Jackdaw    schedule 29.09.2020
comment
Во-первых, XP больше не поддерживается MS. Также должен ли pkg собираться для XP?   -  person CristiFati    schedule 01.10.2020
comment
Да, я знаю, но dll это означало для XP POS Embedded (EOL 2019). К сожалению, другого пути нет, он должен работать на XP. Пакет cpprestsdk должен собираться для XP, я пытался собрать из тега v2.9.1 github.com/microsoft/cpprestsdk/tree/v2.9.1/Release/src/build/ Но все равно не повезло (XP по-прежнему кричит об отсутствующих dll/отсутствующих точках входа в dll )   -  person codewarriorr    schedule 03.10.2020


Ответы (1)


все, что вам нужно сделать, это понизить версию Visual Studio до 2013 и загрузить версию cpprest SDK, например 2.9.1, которая также поддерживает VS 2013 (msvc 120), надеюсь, это поможет.

person Ken    schedule 22.03.2021