-1

有没有人成功使用winusb.hEmbarcadero 的 C++Builder 10.3 社区版?

我最近下载了 10.3,以更新我几年前为 Windows XP(使用 Borland C++Builder 6)编写的 PC 桌面/笔记本电脑应用程序,该应用程序使用 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 社区版 - 我可以编写一个响应按钮按下的应用程序(编译、链接和执行 ok),但是当我包含来自 的任何函数时winusb.h,我得到了错误:

[ilink32 错误] 错误:未解析的外部“WinUsb_(func)”引用自(路径已编辑)UNITx.OBJ

通常,我认为这意味着我没有包含所需的标头,或者无法解析该标头(或 lib)的路径,但我很确定情况并非如此 - 标头绝对是“包含”的,并且我已经编辑了 IDE 路径以明确包含winusb.hwinusb.lib文件目录 - 它们被“隐藏”得很深,但肯定存在。我什至尝试将这两个文件复制到项目目录,但无济于事。

我搜索了 Embarcadero 社区网站,但找不到对“winusb”的引用。

我很欣赏这是一个比 C++Builder 6 复杂得多的环境,而且我很可能会遗漏一些东西,但我无法摆脱 IDE 中的某些东西无法正常工作的感觉 -其他标题链接确定。

想法,有人请吗?

4

1 回答 1

2

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

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

于 2020-08-14T23:05:20.713 回答