1. 程式人生 > >uefi 編譯錯誤解決方案

uefi 編譯錯誤解決方案

沒有include 是 undefined
unresolved 是 沒有link , 對應的define 沒有真正的實現

舉例:

/Id:\project\edk2\CryptoPkg\Include  /Id:\project\edk2\CryptoPkg\Library\Include  /Id:\project\edk2\CryptoPkg\Library\OpensslLib\openssl\include  /Id:\project\edk2\CryptoPkg\Library\OpensslLib\openssl\crypto\i
meDxe\DEBUG\AutoGen.c
AutoGen.c
        "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Vc\bin\lib.exe" /NOLOGO /LTCG /OUT:d:\project\Build\CryptoPkg\NOOPT_VS2015x86\IA32\CryptoPkg\CryptRuntimeDxe\CryptRuntimeDxe\OUTPUT\CryptRuntimeDxe.
Dxe\OUTPUT\object_files.lst
        "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Vc\bin\link.exe" /OUT:d:\project\Build\CryptoPkg\NOOPT_VS2015x86\IA32\CryptoPkg\CryptRuntimeDxe\CryptRuntimeDxe\DEBUG\CryptRuntimeDxe.dll /NOLOGO /N
ata,D /MACHINE:X86 /LTCG /DLL /ENTRY:_ModuleEntryPoint /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG   @d:\project\Build\CryptoPkg\NOOPT_VS2015x86\IA32\CryptoPkg\CryptRuntimeDxe\CryptRu
OpensslLib.lib(rand.obj) : error LNK2001: unresolved external symbol _GetRandomNumber128
d:\project\Build\CryptoPkg\NOOPT_VS2015x86\IA32\CryptoPkg\CryptRuntimeDxe\CryptRuntimeDxe\DEBUG\CryptRuntimeDxe.dll : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Vc\bin\link.exe"' : return code '0x460'
Stop.

方法就是在inf 裡面寫入要用到的lib。

[LibraryClasses]
  DebugLib
  IntrinsicLib
  RngLib
其次就是在dsc 裡面加入具體的例項。

RngLib|MdePkg/Library/BaseRngLib/BaseRngLib.inf