C中的FTDI D2XX API在命令行控制台上运行,但在由macOS上的Xcode和Swift编程构建的应用程序中始终返回零。

问题描述 投票:0回答:1
我正在尝试在masOS上构建macOS应用程序以与FTDI D2XX设备进行通信。我用gcc用C代码编译了一个简单的控制台应用程序,它运行良好并获得了预期的设备数量。但是,当我尝试将FTDI导入Xcode并使用Swift 5构建应用程序时。该应用程序可以成功构建和执行,但对于FTDI设备计数,它始终返回0。我尝试使用两种方法将FTDI D2XX静态库(ftd2xx.a)导入Xcode。但是他们两个都有相同的结果。

    已创建用于调用FTDI D2XX API的C包装程序和桥接标头
  1. 已创建模块并使用“导入xxx”
  2. 调用FTDI D2XX API的C代码是:

int queryDeviceCount(void) { FT_STATUS ftStatus; DWORD numDevs = 999; ftStatus = FT_CreateDeviceInfoList(&numDevs); if (ftStatus == FT_OK) { return numDevs; } return 0; }

[当调用FT_CreateDeviceInfoList时,它将在ftStatus中返回FT_OK。但是numDevs始终为零(在我的设置中应该为2)。我认为FTDI D2XX驱动程序在我的MacBookPro中应该可以,因为它在命令行控制台中可以很好地工作。因此,我想知道在命令行控制台和GUI应用程序之间调用FTDI API是否有任何区别。我很确定FTDI API已在GUI应用程序中正确调用。

谢谢!

我正在尝试在masOS上构建macOS应用程序以与FTDI D2XX设备进行通信。我用gcc用C代码编译了一个简单的控制台应用程序,它运行良好并获得了预期的设备数量。但是当...

swift xcode macos swift5 ftdi
1个回答
0
投票
我在macOS GUI应用程序中发现,系统资源受到保护。我需要在“应用程序沙箱”中启用USB访问功能,才能使用USB访问API。“应用程序沙箱”出现在Xcode的“签名和功能”窗格中,其中显示了用于配置功能的其他控件。USB access in App Sandbox
© www.soinside.com 2019 - 2024. All rights reserved.