2016-02-25 18 views
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吗?

+0

我现在设法手动调用构造函数 - 并没有帮助。 ShellCOmmandLineParseEx检查两个代表旧的和新的EFI shell的变量。如果我调用相应的代码片段来检查这些代表,它将返回一个新的EFI shell - 我看不出为什么它失败。 – Flitzpiepe

+0

虽然使用蒙面亵渎可能会有效地表达你对手头编码问题的挫败感,但它在公共场合并不合适。 (编辑)这个问题本身就是一个很好的问题,所有问题都应该以简明和专业的方式发布。欢迎来到SO,并祝你的编码顺利。 –

回答