【问题标题】:dll library with cpprestsdk compilation on windows xp在 windows xp 上使用 cpprestsdk 编译的 dll 库
【发布时间】:2021-01-15 00:46:39
【问题描述】:

我在 Visual Studio 2019 中有一个使用 cpprestsdk 的 dll 项目(以及用于测试目的的控制台应用程序)。 在 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 入口点)

Any1 知道发生了什么事吗?

@编辑: 添加到程序文件夹后缺少 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 error screenshot

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

【问题讨论】:

  • 欢迎来到 Stack Overflow!您确定这些 DLL 本身是为 XP 构建的吗?也许该平台和工具集有不同的 DLL?您可以自己构建 DLL 以确保所有内容都匹配吗?
  • @Michał Mach - 如果您将错误的详细描述添加到帖子中,它可以帮助您更清楚地理解图片。
  • 第一个 XP 不再受 MS 支持。还应该为 XP 构建 pkg 吗?
  • 是的,我知道,但它适用于 XP POS Embedded(EOL 2019)的 dll。可悲的是,没有办法,它必须适用于 XP。 cpprestsdk 包应该为 XP 构建,我尝试从 v2.9.1 标记 github.com/microsoft/cpprestsdk/tree/v2.9.1/Release/src/build/… 构建但仍然没有运气(XP 仍然对缺少 dll / dll 中缺少入口点大喊大叫)

标签: windows visual-studio dll windows-xp cpprest-sdk


【解决方案1】:

您需要做的就是将您的 Visual Studio 降级到 2013 并下载支持 VS 2013 (msvc 120) 的 cpprest SDK 版本,如 2.9.1,希望对您有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    相关资源
    最近更新 更多