- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻求有关如何使用 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/
在引导 GRUB2 的 EFI 系统上,我想创建一个只读 EFI 变量。这可能吗? 谢谢,垫子 最佳答案 根据 Uefi Specification 2.7通过不提供 EFI_VARIABLE_NON
我是 UEFI 应用程序开发的新手。 我的要求是, 我需要从我的 UEFI 应用程序 (app.efi) 源代码中运行 UEFI shell 命令。 需要有关如何执行此操作的指导。 例子, cp co
我尝试使用 gnu-efi 编译 uefi 代码。但是我不明白如何编译我的 uefi 应用程序代码。 我得到 gnu-efi 3.0.2,解压并输入 make && make install。我写了
我正在 SoC 设备(Up Board)上编写 EFI 可执行文件,以帮助我们自动执行 BIOS 更新和 PXE 启动,以便在众多设备上安装我们的软件。 我遇到的问题是,似乎规范中的大多数协议(pro
我有一个从 uefi 加载的虚拟机 (Windows7x64)。 我能否将我创建的 UEFI 应用程序\驱动程序添加到 UEFI,以便它在启动时加载它? 另外,我可以更改加载 DXE\UEFI 驱动程
我可以在UEFI环境中build and manually execute一个EFI应用程序。但是,我想让我的应用程序在启动时自动执行。 有没有办法告诉引导加载程序执行此操作,还是需要将我的应用程序提
本题表达方式与What is UEFI's boot sequence?相同,但似乎不是我想要的。我想从指令的角度了解 UEFI 序列。 例如,在 BIOS 引导模式的情况下,以简化的方式, 计算机电
我在研究引导加载程序时正好遇到了 UEFI 一词。我能理解一些关于 UEFI 的事情。但是,具有 UEFI 的系统以什么模式(Real、Protected、Long)启动?如果普通的引导加载程序不能与
我正在考虑开发一个简单的(开始)UEFI 引导加载程序来加载 ELF 镜像,并且想知道是否有人可以很好地进入任何现有项目,或者我可以用来开始的示例和。 此外,我想知道是否有人有任何让 virtual
我写了一个EFI二进制文件来测试UEFI shell下的物理DIMM,过程很简单——先写入一个测试模式到一个物理地址,然后读出并与原始模式进行比较。但是,DIMM 可能会遇到可纠正或不可纠正的错误。通
我正在尝试向 UEFI 中的协议(protocol)添加过滤器驱动程序,这意味着在层次结构中使用该协议(protocol)的每个人最终都会通过我。 我知道我需要将我的驱动程序添加到相关的设备路径 -
有没有办法让线程应用程序在 UEFI 上运行?我只在 UEFI 规范中发现了一些关于线程的提及,但它们并没有真正回答我的问题。 最佳答案 目前 UEFI 中没有线程,但是有一个 MpService p
我是 UEFI 的初学者。我正在尝试从我的 UEFI 应用程序中打开一个文件。文件的路径是 fs1:/myfolder/myfile.txt 代码(借助 this answer ): efiStatu
规范的哪一部分详细说明了如何获取命令行参数? 最佳答案 你需要小心这个。 您可能知道,有一个 UEFI LoadedImage 协议(protocol) - 该协议(protocol)返回一个名为 E
我想在 UEFI 中列出根目录的内容,但我没有找到任何协议(protocol)可以做到这一点;因此我想打印目录文件的内容,但是 EFI_FILE_PROTOCOL 无法读取目录文件。我唯一可以做的另一
我有在操作系统旁边运行一个小服务的想法,但我不确定这是否可能。我试图通过阅读一些文档来弄清楚,但没有走远,所以我的问题来了。 我阅读了有关 UEFI 运行时服务的信息。 是否有可能在固件中有一个小模块
我对 PC 固件编程很感兴趣,我只是在研究 UEFI 规范。令我惊讶的是,它似乎是嵌入在固件中的整个操作系统的规范。您甚至可以编写直接使用 UEFI 引导服务运行的 UEFI“应用程序”,而无需任何其
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
如何在 Debian Jessie 机器上创建 UEFI ISO 镜像? 当我在 Kubuntu 上使用 follow 命令时,一切正常 genisoimage -quiet -V "my-amd64
在 Windows 应用程序中,我有一个 GetFirmwareEnvironmentVariableA 函数来读取固件环境变量。有没有什么办法可以在 uefi 驱动程序的这个变量中写入一些东西,然后
我是一名优秀的程序员,十分优秀!