3

例如,我可以std::vector在 macOS / XCode 的 DriverKit 驱动程序中使用吗?

DriverKit 有一些容器类,如https://developer.apple.com/documentation/driverkit/osarray?language=objcOSArray

如果我创建一个新的“DriverKit 驱动程序”项目并包含,<vector>那么我会遇到构建错误。这些错误来自包含<cstring>,错误是

No member named 'strcpy' in the global namespace

No member named 'strcat' in the global namespace

4

1 回答 1

3

据我所知,你不应该这样做。您最终拉入的头文件不是来自 DriverKit SDK,它们是 Xcode 编译器工具链附带的默认头文件。他们假设一个正常的 macOS 构建环境,而不是 dext 环境。DriverKit SDK 不包含 C++ stdlib 标头,并且仅包含 C 标准库子集的一些精简标头。因此缺少strcpystrcat

链接 libc++ 也会失败,即使是 DriverKit SDK 中包含的版本。我不知道为什么 DriverKit SDK 中包含该库的一个版本,但它显然不适合在 dexts 中使用。

大概没有什么特别阻止您包含一些其他容器库,甚至直接包含 STL 实现的一部分。您可能需要手动连接内存分配调用。

于 2020-05-15T13:27:00.207 回答