Я создаю драйвер UEFI DXE / EFI (UDK2018) (в Windows, используя VS2017), в который мне нужно связать файл существующего объекта (.obj
). Я вполне уверен, что это должно быть сделано из файла INF , но я не вижу ничего конкретного относительно включения объектного файла в документацию EDK2. Я нашел эти два примера для справки:
https://github.com/tianocore/edk2/blob/UDK2018/StdLib/LibC/LibC.inf#L96
[Binaries.X64]
LIB|Twofish_x64.obj|*
LIB|Camellia_aesni_x64.obj|*
LIB|Camellia_x64.obj|*
https://github.com/veracrypt/VeraCrypt-DCS/blob/master/Library/VeraCryptLib/VeraCryptLib.inf#L79
[Binaries.IA32]
LIB|Main/Ia32/ftol2.obj|*|MSFT
Однако даже с этими справочными данными (которые я предполагаюработать), я не могу найти правильный способ настроить файл INF , чтобы object_files.lst
включал .obj
. (Фактическая ошибка, конечно, является неразрешенной внешней. - Я убедился, что если я вручную добавлю файл .obj
в object_files.lst
, ссылка на драйвер .efi
будет успешной. )
Без .obj
мой INF выглядит следующим образом:
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = SampleDxe
FILE_GUID = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
MODULE_TYPE = DXE_DRIVER
VERSION_STRING = 1.0
ENTRY_POINT = SampleDxe_Main
[Sources]
SampleDXE.c
SampleDXE.h
SampleProtocol.h
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
[LibraryClasses]
UefiBootServicesTableLib
MemoryAllocationLib
UefiDriverEntryPoint
BaseMemoryLib
UefiLib
DebugLib
BaseLib
PcdLib
DevicePathLib
[Depex]
TRUE
Я попытался вставить следующие разделы между [Sources]
и [Packages]
без успеха:
[Binaries]
LIB|path/to/my/file.obj|*|MSFT
[Binaries.X64]
LIB|path/to/my/file.obj|*|MSFT
[Binaries]
LIB|path/to/my/file.obj|*
[Binaries.X64]
LIB|path/to/my/file.obj|*
[Binaries]
LIB|path/to/my/file.obj
[Binaries.X64]
LIB|path/to/my/file.obj
(.obj
размещено с исходными файлами)
[Binaries]
LIB|file.obj|*|MSFT
[Binaries.X64]
LIB|file.obj|*|MSFT
[Binaries]
LIB|file.obj|*
[Binaries.X64]
LIB|file.obj|*
[Binaries]
LIB|file.obj
[Binaries.X64]
LIB|file.obj
Я также изменил INF_VERSION для более поздних версий (0x0001001A, 1.25 и т. Д.), Хотя и не для каждой комбинации приведенных выше разделов.
Я также считаю,Я мог бы создать промежуточный файл .lib
, но если я собираюсь это сделать, есть другие, более прямые варианты, которые имеют смысл в моем случае. Использование автономного объектного файла было бы предпочтительнее, проще и более совместимо с другими частями более крупного проекта, и приведенные выше примеры наверняка указывают на то, что это возможно.
Может кто-нибудь сказать мне, какЯ могу получить ранее существующий объектный файл для связи с DXE / EFI (предположительно, добавив его в object_files.lst
)?