error: conflicting types for ‘UefiMain’
EDK2 中添加自己的inf
,编译出现如下问题,主要说.c 和.h 冲突了,怎么也想不明白
edk2/Demo/01_helloworld/main.c:7:1: error: conflicting types for ‘UefiMain’
UefiMain (
^
In file included from <command-line>:0:0:
edk2/Build/Emulator/DEBUG_GCC5/X64/Demo/01_helloworld/main/DEBUG/AutoGen.h:67:1: note: previous declaration of ‘UefiMain’ was here
make: 对“tbuild”无需做任何事。
UefiMain (
^
Building ... edk2/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf [X64]
make: *** [edk2/Build/Emulator/DEBUG_GCC5/X64/Demo/01_helloworld/main/OUTPUT/main.obj] Error 1
GNUmakefile:384: recipe for target 'edk2/Build/Emulator/DEBUG_GCC5/X64/Demo/01_helloworld/main/OUTPUT/main.obj' failed
build.py...
: error 7000: Failed to execute command
make tbuild [edk2/Build/Emulator/DEBUG_GCC5/X64/Demo/01_helloworld/main]
build.py...
: error F002: Failed to build module
edk2/Demo/01_helloworld/main.inf [X64, GCC5, DEBUG]
- Failed -
Build end time: 16:13:31, Oct.28 2020
Build total time: 00:00:11
解决,是由于接口前面少了EFIAPI
这个宏,
如下:
/*main.c */
#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/UefiApplicationEntryPoint.h>
EFI_STATUS
EFIAPI
UefiMain (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
SystemTable -> ConOut-> OutputString(SystemTable -> ConOut, L"HelloWorld\n");
return EFI_SUCCESS;
}