哪个 DLL 有 PathCchAppend?

2023-11-30

我正在尝试有条件地使用 (if可用)功能PathCchAppend。我已经从标题中获取了函数签名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 绑定到一份合同中,以便在 Windows 的未来版本中继续从此 DLL 导出此函数。因此,使用显式链接并不或多或少安全LoadLibrary/GetProcAddress与使用 SDK 中的 .lib 文件隐式链接不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪个 DLL 有 PathCchAppend? 的相关文章

随机推荐