gpt4 book ai didi

c++ - 使用 MingW 编译的程序如何使用 Windows 便携设备 (WPD) API?

转载 作者:太空宇宙 更新时间:2023-11-04 11:30:06 24 4
gpt4 key购买 nike

我正在编写一个程序来自动执行一些在检测到可移动设备时必须完成的任务。最初仅使用文件流。当我意识到并非所有可移动设备都可以通过这种方式访问​​时,我开始使用 SHFileOperation,但现在我意识到即使通过这种方法也无法访问某些设备。

我想使用 WPD API,但我的程序是使用 MingW 编译的,它使用的库也是使用 MingW 编译的。我看到的仅有的两种可能性是为 Visual C++ 重新编译所有内容(我想尽可能避免这种情况)或编写一个小型包装库,它将编译为 DLL 并且仅导出函数并且可以轻松地从使用 MingW 编译的程序链接即使 DLL 本身是用 Visual C++ 编译的(因此它可以使用 WPD API)。

例如,如果有人知道一个已经包装了 WPD 的库,那将节省我很多时间。

最佳答案

我认为您不会找到 WPD 的任何通用包装器,因为 API 公开了可以直接从 MinGW 访问的 COM 接口(interface)。问题是没有声明接口(interface)和相关类型的 MinGW 兼容 header 。几乎没有不涉及使用 Microsoft 编译器的可能解决方案:

  • 编写您自己的 MinGW 兼容 header 。如果您可以仅根据文档执行此操作而无需引用 Microsoft 的 header ,那么您可以提交它们以添加到 w32api 包中,以便其他人可以使用它们。
  • 复制 Windows SDK 版本的 header 并删除所有阻止它们使用 GCC 编译的垃圾。来自旧版 SDK 的旧版 header 需要删除的垃圾更少。
  • 创建包含 SDK header 的 header 并使用宏来消除垃圾。
  • 使用 WPD 的 OLE 自动化接口(interface)。 MinGW 支持执行此操作所需的所有 COM 接口(interface)(主要是 IDispatch)。 Windows SDK 文档 briefly addresses这个选项。

关于c++ - 使用 MingW 编译的程序如何使用 Windows 便携设备 (WPD) API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25099860/

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