gpt4 book ai didi

c++ - 哪个 DLL 有 PathCchAppend?

转载 作者:行者123 更新时间:2023-11-30 02:14:40 25 4
gpt4 key购买 nike

我正在尝试有条件地使用(如果可用)函数 PathCchAppend .我从 header pathcch.h 中获得了函数签名。但是,当我尝试从 SHLWAPI.DLL 获取函数地址时,它失败了:

auto pca = GetProcAddress(GetModuleHandle(L"shlwapi.dll"), "PathCchAppend");

使用 Depends,我看到这个函数在这个 DLL 中不存在(我在 Windows 10 上)。不存在任何 pathcch.dll,因此也无法加载它。

这个函数放在哪个DLL中?

编辑:感谢答案。在这里,我找到了以下答案中提到的 DLL 名称:

https://learn.microsoft.com/en-us/windows/win32/apiindex/windows-81-api-sets

最佳答案

您可以使用 DUMPBIN从 .lib 文件中提取此信息的工具:

dumpbin /headers /path/to/pathcch.lib

然后您需要筛选输出以找到有问题的函数。例如,这是 x64 版本的 lib 文件的输出:

  Version      : 0  Machine      : 8664 (x64)  TimeDateStamp: FFFFFFFF Sun Feb 07 06:28:15 2106  SizeOfData   : 0000002E  DLL name     : api-ms-win-core-path-l1-1-0.dll  Symbol name  : PathCchAppend  Type         : code  Name type    : name  Hint         : 5  Name         : PathCchAppend

关于硬编码此 DLL 名称的向后和向前兼容性的评论,.lib 文件硬编码 DLL 名称。因此,如果您使用 .lib 文件链接到该函数,那么您就是在硬编码对该 DLL 的依赖性。这将 Microsoft 绑定(bind)到一个契约(Contract)中,以便在未来的 Windows 版本中继续从此 DLL 中导出此函数。因此,使用 LoadLibrary/GetProcAddress 显式链接与使用 SDK 中的 .lib 文件隐式链接一样安全。

关于c++ - 哪个 DLL 有 PathCchAppend?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57354840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com