3
我想有方便的控制命令行参数。 Therfor我想使用ShellLib。UEFI Shelllib - ASSERT意味着ShellLib的初始化?
我的代码如下所示:
...
#include <Library/ShellLib.h>
...
EFI_STATUS
EFIAPI
UefiMain (
EFI_HANDLE ImageHandle,
EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
LIST_ENTRY *ParamPkg;
CHAR16 *ProblemParam;
Status = ShellCommandLineParseEx (CmdLineCheckList, &ParamPkg, &ProblemParam, TRUE, FALSE);
...
}
我也初始化CmdLineCheckList。但是当我运行该程序,我得到一个
ASSERT: UefiShellLib.c (2242): mEfiShellInterface != (void *) 0
我抬起头的代码行,它看起来像ShellLibConstructor()不叫。但它应该来自外壳本身,我也找不到一个例子,除了直接调用ShellCommandLineParseEx外,其他的事情都已完成。 由于包含问题,我也无法手动启动构造函数。
你能帮我一下,我必须正确初始化我的应用程序来运行ShellLib吗?
我现在设法手动调用构造函数 - 并没有帮助。 ShellCOmmandLineParseEx检查两个代表旧的和新的EFI shell的变量。如果我调用相应的代码片段来检查这些代表,它将返回一个新的EFI shell - 我看不出为什么它失败。 – Flitzpiepe
虽然使用蒙面亵渎可能会有效地表达你对手头编码问题的挫败感,但它在公共场合并不合适。 (编辑)这个问题本身就是一个很好的问题,所有问题都应该以简明和专业的方式发布。欢迎来到SO,并祝你的编码顺利。 –