我正在尋找關於如何使用Visual Studio 2012項目構建使用EDK2 SDK的UEFI驅動程序的建議。我試圖靜態鏈接UefiLib.lib,但失敗了。我已經將lib添加到鏈接器下的其他依賴項。使用Visual Studio構建UEFI驅動程序
#include <Uefi.h>
#include <Library/UefiLib.h>
EFI_STATUS
EFIAPI
UefiMain (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
Print((CHAR16 *)L"Welcome to the world of EDK II.\n");
return EFI_SUCCESS;
}
錯誤是
test.obj : error LNK2001: unresolved external symbol "unsigned __int64 __cdecl Print(unsigned short const *,...)" ([email protected]@YA_KPEBGZZ)
現在我已經使用DUMPBIN確保打印在lib存在,但它的存在不是作爲一個出口或進口,但作爲一個archivemember。我不確定這是否是問題。
「您不能單獨構建UEFI驅動程序或應用程序,它必須在EDK2源代碼樹內完成」 - 事實並非如此。我正在使用Visual Studio 2015構建UEFI文件系統驅動程序,而不使用EDK2,位於https://github.com/pbatard/efifs。所有你需要的是gnu-efi作爲一個子模塊。 – Akeo
這個問題特別是關於使用EDK2 SDK和VS2012的UEFI驅動程序,所以我在這方面做了回答。如果我們從這個問題的背景中去掉這句話 - 當然,你是對的。你仍然需要一個帶EDK2樹頭文件的環境(在你的情況下是gnu-efi),我自己在這樣的自定義樹中構建了EFI組件。順便說一句,你的EfiFs驅動看起來不像EDK2組件(例如沒有INF文件),並且它不與任何EDK2庫鏈接,如問題中的UefiLib.lib,也不使用EDK2構建工具。 – sun2sirius
啊,我的不好。我認爲OP是在嘗試使用VS構建EFI驅動程序,而不必使用EDK2,並且遇到問題。 – Akeo