2017-10-03 18 views
0

Print2プロトコルに基づいて簡単なUEFIプロトコルを作成しようとしています。ここでUEFIプロトコル:エラー: '='、 '、'、 ';'、 'asm'または '__attribute__' before 'Print3Hello'

は、コンパイルの全体のエラーです:

Building ... /home/qwn/src/edk2/Print3/Print3.inf [X64] 
"gcc" -g -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=Print3Strings -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address -flto -DUSING_LTO -Os -D DISABLE_NEW_DEPRECATED_INTERFACES -c -o /home/qwn/src/edk2/Build/MdeModule/DEBUG_GCC5/X64/Print3/Print3/OUTPUT/./Print3.obj -I/home/qwn/src/edk2/Print3 -I/home/qwn/src/edk2/Build/MdeModule/DEBUG_GCC5/X64/Print3/Print3/DEBUG -I/home/qwn/src/edk2/MdePkg -I/home/qwn/src/edk2/MdePkg/Include -I/home/qwn/src/edk2/MdePkg/Include/X64 -I/home/qwn/src/edk2/MdeModulePkg -I/home/qwn/src/edk2/MdeModulePkg/Include /home/qwn/src/edk2/Print3/Print3.c 
/home/qwn/src/edk2/Print3/Print3.c:5:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘Print3Hello’ 
Print3Hello() 
^ 

/home/qwn/src/edk2/Print3/Print3.c:12:3: error: ‘Print3Hello’ undeclared here (not in a function) 
Print3Hello 
^ 

/home/qwn/src/edk2/Print3/Print3.c:20:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘Print3Entry’ 
Print3Entry(
^ 

GNUmakefile:411: recipe for target '/home/qwn/src/edk2/Build/MdeModule/DEBUG_GCC5/X64/Print3/Print3/OUTPUT/Print3.obj' failed 
make: *** [/home/qwn/src/edk2/Build/MdeModule/DEBUG_GCC5/X64/Print3/Print3/OUTPUT/Print3.obj] Error 1 

これは、ここではメインの.cファイル

#include "Print3.h" 

EFI_STATUS 
EFIAPT 
Print3Hello() 
{ 
    Print(L"Hello, self defined print3 protocol \n"); 
    return EFI_SUCCESS; 
} 

EFI_PRINT3_PROTOCOL myPrint3Protocol = { 
    Print3Hello 
}; 

//Entry function for the driver, here we install the protocol 
EFI_HANDLE print3ProtocolHandle = NULL; 

EFI_STATUS 
EFIAPT 
Print3Entry(
    EFI_HANDLE  imageHandle, 
    EFI_SYSTEM_TABLE *systemTable 
) 
{ 
    EFI_STATUS status; 

    status = gBS->InstallProtocolInterface(&print3ProtocolHandle, 
             &gEfiPrint3ProtocolGuid, 
             &myPrint3Protocol, 
             NULL 
             ); 
    ASSERT_EFI_ERROR (status); 
    reutrn status; 
} 

は.hの

#ifndef _PRINT3_H_ 
#define _PRINT3_H_ 

#include <Uefi.h> 
#include <Library/UefiLib.h> 
#include <Library/UefiDriverEntryPoint.h> 
#include <Library/UefiBootServicesTableLib.h> 


//Guid for the print 3 protocol. 
#define EFI_PRINT3_PROTOCOL_GUI \ 
    { 0x3b777e4b, 0x93b1, 0x4985, { 0xb0, 0x55, 0x52, 0x55, 0x1b, 0x54, 0xcc, 0xcc }} 

typedef 
EFI_STATUS 
(EFIAPI *EFI_PRINT_STRING)(); 


typedef struct _EFI_PRINT3_PROTOCOL { 
    EFI_PRINT_STRING efiPrintHello; 
}EFI_PRINT3_PROTOCOL; 

extern EFI_GUID gEfiPrint3ProtocolGuid; 
#endif 

され、最終的にここにあるさインフォメーション

[Defines] 
INF_VERSION     = 1.25 
BASE_NAME      = Print3 
FILE_GUID      = f4df2436-242b-4e13-ae42-50c30118eff2 
MODULE_TYPE     = UEFI_DRIVER 
VERSION_STRING     = 1.0 
ENTRY_POINT     = Print3Entry 


[Sources] 
     Print3.h 
     Print3.c 

[Packages] 
     MdePkg/MdePkg.dec 
     MdeModulePkg/MdeModulePkg.dec 

[LibraryClasses] 
     UefiLib 
     UefiDriverEntryPoint 
     UefiBootServicesTableLib 

[Guids] 

[Ppis] 

[Protocols] 
     gEfiPrint3ProtocolGuid 

[FeaturePcd] 

[Pcd] 

Print3ためのGUIDは、私がPRINT2プロトコルUEFIライブラリに実装続いている

## Print3/Print3.h 
gEfiPrint3ProtocolGuid = { 0x3b777e4b, 0x93b1, 0x4985, { 0xb0, 0x55, 0x52, 0x55, 0x1b, 0x54, 0xcc, 0xcc }} 

MdeModule/MdeModule.decで定義されています。私が生成したGUIDを除いて、変数ファイルをprint2.infから取り出し、変数名を変更しました。

ヘッダーはPrint2プロトコルで使用されています。何か非常に愚かなものでなければなりません。

+0

'EFI_STATUS'または' EFIAPT'は未定義です。 ...待って、「EFIAPT」の代わりに「EFIAPI」を意味しましたか? – melpomene

+0

'reutrn'のスペルも間違っています。 – melpomene

+0

@melpomene Tsk! tahtは私のことがとてもばかげた。あなたが答えを書いておきたいなら、私は受け入れます。 – qwn

答えて

1

マクロEFIAPTが定義されていないため、後で別のエラーが発生する可能性があります。私はあなたがEFIAPIを意味すると思います。

+0

私の答えを受け入れてくれてありがとう。私はメルポメンがこのエラーを指摘していたのを見たことがありませんでした。 – ChipJust

関連する問題