在Windows XP上编译带有cpprestsdk的DLL库

3
我有一个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入口点)。任何人有任何想法吗?

@编辑: 将缺失的dll文件添加到程序文件夹后:

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

出现了ntdll.dll的问题。

Entry Point Not Found错误截图

在动态链接库ntdll.dll中找不到过程入口点WinSqmAddToStreamEx


欢迎来到Stack Overflow!您确定这些DLL本身是为XP构建的吗?也许有一个不同的DLL适用于该平台和工具集?您可以自己构建DLL以确保一切匹配。 - metal
@Michał Mach - 如果您在帖子中添加错误的详细描述,可以帮助更清楚地了解情况。 - Jackdaw
首先,XP已经不再受MS支持。另外,这个包是否应该建立在XP上? - CristiFati
是的,我知道,但是这个dll是为XP POS Embedded(EOL 2019)设计的。遗憾的是,没有绕过的办法,它必须在XP上运行。 cpprestsdk包应该可以构建XP版本,我尝试了从v2.9.1标签 https://github.com/microsoft/cpprestsdk/tree/v2.9.1/Release/src/build/vs14.xp 进行构建 但是仍然没有成功(XP仍然提示缺少dll / dll中缺少入口点)。 - codewarriorr
1个回答

0

你只需要将你的Visual Studio降级到2013版本,并下载支持VS 2013(msvc 120)的cpprest SDK版本,例如2.9.1,希望能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接