最近在学习 UEFI(建议替换 BIOS)时,我尝试编写一些东西并使用 EDK2 进行编译。ide 是生成 .EFI 二进制文件,我可以在进入 UEFI shell 时启动它。我能够这样做。完美!
现在我的代码涉及纯 C 风格(基本上缺少 C++ 工具,例如类、构造函数、虚拟和 STL 容器类)。我想知道我是否可以使用 STL 容器类(如字符串、向量、哈希映射)并且仍然能够为 UEFI 编译和运行我的 .EFI?
我研究了一下,发现很多气馁!基本上,我收集到的是:
- UEFI 与 C 密切相关。开源实现不支持 C++
- 不支持新建和删除。
- vtable 生成依赖于编译器,因此生成的代码不可移植
此外,从这个网站可以学到很多东西: UEFI Programming
但不幸的是,我很困惑!
我的问题是我可以在我的代码中使用 STL 类(std::string/std::vector/std::map)并使用 EDK2 为 UEFI 环境编译它吗?
如果有人能指出我要寻找的解决方案/方向,我将不胜感激。现在,我正在使用的唯一选择是在此处找到的容器的 C 实现: UTHash 实现
有办法吗?