我正在寻找有关如何使用 Visual Studio 2012 项目通过 EDK2 SDK 构建 UEFI 驱动程序的建议。我试图静态链接 UefiLib.lib 但惨败。我已将该库添加到链接器下的附加依赖项中。
#include <Uefi.h>
#include <Library/UefiLib.h>
EFI_STATUS
EFIAPI
UefiMain (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
Print((CHAR16 *)L"Welcome to the world of EDK II.\n");
return EFI_SUCCESS;
}
错误是
test.obj : error LNK2001: unresolved external symbol "unsigned __int64 __cdecl Print(unsigned short const *,...)" (?Print@@YA_KPEBGZZ)
现在我已经使用 DUMPBIN 来确保 Print 存在于库中,但它不是作为导出或导入存在,而是作为存档成员存在。我不确定这是否是问题所在。
您无法单独构建 UEFI 驱动程序或应用程序,必须在 EDK2 源代码树中完成,该源代码树具有编译和链接 EDK2 组件所需的大量头文件和库。 EDK2 组件必须使用 EDK2 构建工具构建,C 编译器/链接器只是 EDK2 构建过程中的一个步骤。您应该从使用命令行构建开始,以确保环境设置正确,然后您可以尝试将要开发的组件引入 Visual Studio。
在 Visual Studio 中,您可以从创建 Makefile 项目开始 - 这是指定所有自定义构建步骤所必需的。例如,转到项目的属性页,在配置属性 -> NMake -> 常规 -> 构建命令行下。将以下代码放入构建命令行中;它将允许您构建整个 AppPkg 包,其中包括您尝试构建的 Hello 应用程序。
cd C:\src\edk2
call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86
call edksetup.bat
build.exe -p c:\src\edk2\AppPkg\AppPkg.dsc -t VS2012x86 -b DEBUG
如果您只想构建 Hello,则必须自定义 AppPkg.dsc 文件,该文件用于构建 AppPkg 包。有多种方法可以通过使用更高级的命令行开关和 build.exe 实用程序来进一步调整构建过程 - 您必须研究 TianoCore.org 上提供的 EDK2 手册。
上述步骤应该可以帮助您开始在 Visual Studio 中构建 UEFI 应用程序/驱动程序,但您可能希望使用 Visual Studio 来使用其强大的 IntelliSense 和调试功能。为此,您应该从构建 Nt32Pkg 软件包开始,该软件包在 Windows 中创建 EFI 模拟环境,并允许您像常规 Windows 应用程序一样单步执行代码并调试 UEFI 驱动程序/应用程序。设置 Visual Studio 项目来执行此操作有点棘手,除非您使用专门的 VS 扩展来进行 UEFI 开发,为您自动执行所有这些工作,例如 Phoenix Core Architect。但是,可以手动完成,您只需手动将 EDK2 源文件/文件夹结构的部分或全部导入到 VS 解决方案资源管理器中即可。 Nt32Pkg 构建的结果是 Windows 应用程序 C:\src\edk2\Build\NT32IA32\DEBUG_VS2012x86\IA32\SecMain.exe - 它应该帮助您在 Windows 环境中开始并向您介绍 UEFI。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)