【发布时间】:2020-11-02 18:24:25
【问题描述】:
我正在编写一个仍需要在 Windows XP 上运行的应用程序。我想使用SHCreateMemStream()。 MSDN 是这样说的:
在 Windows Vista 之前,此功能未公开包含 Shlwapi.h 文件,也不是从 Shlwapi.dll 中按名称导出的。使用 在早期系统上,您必须直接从 Shlwapi.dll 调用它 文件为序数 12 (source)
但是我该怎么做呢?由于 MSDN 说 SHCreateMemStream() 不是在 Shlwapi.dll 中按名称导出的,我想我不能只使用 LoadLibrary() 和 GetProcAddress() 在 XP 上获取指向它的函数指针。那么我应该如何在 XP 上调用这个函数呢?
请注意,我正在寻找纯 C 语言的解决方案,而不是 C++。
【问题讨论】:
-
this 有帮助吗?
-
简单地与 Shlwapi.lib 链接 - 无论如何 SHCreateMemStream 由序号 12 导入
-
"我想我不能只使用
LoadLibrary()和GetProcAddress()在 XP 上获取指向它的函数指针" - 是的,你可以。GetProcAddress()可以按名称或序数查找函数。 -
@RemyLebeau:谢谢,我不知道。但事实证明,Windows 7 SDK 附带的链接库也导入了序数(正如 RbMm 在他的回答中指出的那样)。所以我的 OP 中引用的 MSDN 中的注释可能是非常旧的 SDK 的遗物,因为在 Windows 7 SDK 中,
SHCreateMemStream()确实没有什么特别的事情要做。