我可以在 DriverKit 驱动程序中使用 STL 吗?
Can I use STL in a DriverKit driver?
我可以在 macOs 的 DriverKit 驱动程序中使用例如 std::vector
/ XCode 吗?
DriverKit 有一些容器 class 像 OSArray
https://developer.apple.com/documentation/driverkit/osarray?language=objc
如果我创建一个新的 "DriverKit driver" 项目并包含 <vector>
,那么我会遇到构建错误。这些错误来自于包含 <cstring>
而错误是
No member named 'strcpy' in the global namespace
No member named 'strcat' in the global namespace
据我所知,你不应该这样做。 headers 您最终引入的不是来自 DriverKit SDK,它们是 Xcode 编译器工具链附带的默认工具。他们假设一个正常的 macOS 构建环境,而不是 dext 环境。 DriverKit SDK 不包含 C++ stdlib headers,仅包含一些 stripped-down headers 作为 C 标准库的一个子集。因此缺少 strcpy
和 strcat
.
针对 libc++ 的链接也失败,即使是包含在 DriverKit SDK 中的版本。我不知道为什么 DriverKit SDK 中包含该库的一个版本,但它显然不适合在 dexts 中使用。
大概没有什么特别阻止您包含其他容器库,甚至直接包含 STL 实现的部分内容。不过,您可能需要手动连接内存分配调用。
我可以在 macOs 的 DriverKit 驱动程序中使用例如 std::vector
/ XCode 吗?
DriverKit 有一些容器 class 像 OSArray
https://developer.apple.com/documentation/driverkit/osarray?language=objc
如果我创建一个新的 "DriverKit driver" 项目并包含 <vector>
,那么我会遇到构建错误。这些错误来自于包含 <cstring>
而错误是
No member named 'strcpy' in the global namespace
No member named 'strcat' in the global namespace
据我所知,你不应该这样做。 headers 您最终引入的不是来自 DriverKit SDK,它们是 Xcode 编译器工具链附带的默认工具。他们假设一个正常的 macOS 构建环境,而不是 dext 环境。 DriverKit SDK 不包含 C++ stdlib headers,仅包含一些 stripped-down headers 作为 C 标准库的一个子集。因此缺少 strcpy
和 strcat
.
针对 libc++ 的链接也失败,即使是包含在 DriverKit SDK 中的版本。我不知道为什么 DriverKit SDK 中包含该库的一个版本,但它显然不适合在 dexts 中使用。
大概没有什么特别阻止您包含其他容器库,甚至直接包含 STL 实现的部分内容。不过,您可能需要手动连接内存分配调用。