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