範例已上傳, 請去如下網址下載:
https://drive.google.com/open?id=1dKOyq0AjA-lrfkOHX7TkT5qCS1kWSl1b
Library在PEIM或DXE driver的INF裡會被引用, 如本例中CloudDxeDriver.inf和CloudDxeDriver2.inf都有加入CloudLib, 但是重點來了, 在CloudDxeDriver.c和CloudDxeDriver2.c都有呼叫CloudLibTest()這個函式, 透過include "CloudLib.h"這兩個c檔都能呼叫成功, 但是這兩支driver印出來的錯誤訊息卻不相同, 這是為什麼呢? 其實道理不難, 因為其中一支的CloudLib被放在Nt32Pkg.dsc裡面的[LibraryClasses.common]底下, 這代表了所有的Dxe drvier都可以使用CloudLib, 而這時CloudLibTest()印出來的message是"cloud-test Library Test", 但是又請注意下面的程式碼:
Nt32Pkg/CloudDxeDriver2/CloudDxeDriver2.inf {
<LibraryClasses>
CloudLib|Nt32Pkg/Library/CloudLib2/CloudLib2.inf
}
這代表著雖然整個專案的CloudLib都是吃CloudLib.inf但在CloudDxeDriver2.inf這支driver裡CloudLib被代換成CloudLib2.inf, 而CloudLib2.c裡的CloudLibTest()印出來的message是"cloud-test Replace Library Test", 怎麼樣, 簡單吧!!
沒有留言:
張貼留言