在之前的文章中【参考1】介绍了一个基于 Visual C++非常简单的 UEFI 开发框架。偶然的机会发现使用这个架构可以方便的实现C++ 的编写。于是,从这里开始,介绍如何使用这个框架学习简单的C++知识。
这次首先介绍实验环境的配置。在 C:\BuildBs\CppStudy\ 下创建 CPP 目录,其中放置测试使用到的文件:
其中 gfx.cpp 是源代码,g1.bat 是用于编译的批处理,这里直接使用批处理来进行编译,其中写入的都是绝对路径,这样更加直观容易理解发生了生么。
编译方法是打开 VS2019 X86 Command窗口(必须使用X64 窗口),在目录下运行 g1.bat 之后就会生成Cpp1.efi 的文件。
将这个文件拷贝到 Emulator 目录下就可以在模拟器中测试了。模拟器是来自EDk202308,有兴趣的朋友可以自行编译生成或者使用其他编译器。
之后进入 Emulator 运行 WinHost.exe ,即可运行 cpp1.efi 进行测试。
上述文件打包为一个文件有兴趣的朋友可以使用这个环境进行实验。
特别需要注意的是:在这一套环境中,当需要使用gSystemTable->ConOut->OutputString() 的时候,需要使用 u”XXX” 来定义字符串,这个是因为在 basic_types.h 中使用了如下定义:
using CHAR16 = char16_t;
这个对于我们编写代码影响不大,字符串使用 u作为前缀即可。
参考:
1. https://www.lab-z.com/sus/ 一个非常简单的UEFI Application开发框架