gpt4 book ai didi

c - 使用 Visual Studio 构建 UEFI 驱动程序

转载 作者:行者123 更新时间:2023-12-02 19:59:57 28 4
gpt4 key购买 nike

我正在寻求有关如何使用 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。

关于c - 使用 Visual Studio 构建 UEFI 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21171455/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com