最近、UEFI (提案されている BIOS の代替品) について学びながら、EDK2 を使用してコーディングとコンパイルを試みました。アイデアは、UEFI シェルに入ったときに起動できる .EFI バイナリを生成することでした。私はそうすることができました。完璧に!
現在、私のコードには純粋な C スタイルが含まれています (基本的に、クラス、コンストラクター、バーチャル、STL コンテナー クラスなどの C++ 機能がありません)。STL コンテナー クラス (文字列、ベクター、ハッシュ マップなど) を使用して、UEFI 用に .EFI をコンパイルして実行できるかどうか疑問に思っていました。
少し調べたところ、落胆がたくさんありました!基本的に、私が集めたものは次のとおりです。
- UEFI は C と密接に結びついています。オープンソースの実装は C++ をサポートしていません。
- new および delete はサポートされていません。
- vtable の生成はコンパイラに依存するため、生成されたコードは移植性がありません
さらに、このサイトから学ぶべきことがたくさんありました: UEFI プログラミング
しかし、残念ながら私は混乱したままでした!
私の質問は、コードで STL クラス (std::string/std::vector/std::map) を使用し、UEFI 環境用の EDK2 を使用してコンパイルできるかということです。
誰かが探すべき解決策/方向性を教えていただければ幸いです。現在、私が取り組んでいる唯一のオプションは、ここにあるコンテナーの C 実装の 1 つです: UTHash 実装
回避策はありますか?