WinUsb with C++ Builder 10.3 社区版

WinUsb with C++ Builder 10.3 community edition

有人成功使用 winusb.h 与 Embarcadero 的 C++Builder 10.3 社区版吗?

我最近下载了 10.3,目的是更新我几年前为 Windows XP(使用 Borland C++Builder 6)编写的 PC desktop/laptop 应用程序,它使用 WinUSB 函数来驱动(一次一台)三台机器。

尝试 运行 Windows 10 上的可执行文件会导致 USB 设备访问出现保护错误 - 它在 XP 和 Windows 7 上运行良好。

USB 设备已由 Windows 10(感谢 P. Batard)更新为自动识别,并使用 Microsoft 在 How to Access a USB Device by Using WinUSB Functions 的示例,我相信没有问题设备 - 它加载,我可以使用 WinUSB 函数调用查询描述符,在 Windows 10 计算机上的 Visual Studio 环境中编码。

回到 Embarcadero 的 C++Builder 10.3 社区版 - 我可以编写一个应用程序来响应按钮按下(编译,link 并执行 ok),但是当我包含来自 winusb.h,我收到错误:

[ilink32 Error] Error: Unresolved external 'WinUsb_(func)' referenced from (path edited) UNITx.OBJ

通常,我认为这意味着我没有包含必需的 header,或者 header(或 lib)的路径无法解析,但我我很确定情况并非如此 - header 肯定是 'included',我已经编辑了 IDE 路径以明确包含 winusb.hwinusb.lib 文件目录 - 它们 'buried' 相当深,但肯定存在。我什至尝试将这两个文件复制到项目目录,但无济于事。

我搜索了 Embarcadero 社区站点,但找不到对 'winusb' 的引用。

我很欣赏这是一个比 C++Builder 6 复杂得多的环境,我很可能会遗漏一些东西,但我无法摆脱 IDE 没有正常工作 - 其他 headers link 好的。

有想法吗?

仅仅将 IDE 指向包含 Winusb.lib 的文件夹是不够的,您必须实际将 .lib 文件添加到您的 C++ 项目中,或者在您的 C++ 代码使用 #pragma comment(lib, "Winusb.lib") 语句,否则 .lib 文件将不会传递给链接器来解析您对 WinUSB 函数的调用。

C++Builder 6 中的大多数 .lib 文件也需要这个额外的步骤,顺便说一句。