DLL中導出函數的聲明有兩種方式:一種為4.1節例子中給出的在函數聲明中加上__declspec(dllexport),這里不再舉例說明;另外一種方式是采用模塊定義(.def) 文件聲明,.def文件為鏈接器提供了有關被鏈接程序的導出、屬性及其他方面的信息。
下面的代碼演示了怎樣同.def文件將函數add聲明為DLL導出函數(需在dllTest工程中添加lib.def文件):
; lib.def : 導出DLL函數
LIBRARY dllTest
EXPORTS
add @ 1
.def文件的規則為:
(1)LIBRARY語句說明.def文件相應的DLL;
(2)EXPORTS語句后列出要導出函數的名稱。可以在.def文件中的導出函數名后加@n,表示要導出函數的序號為n(在進行函數調用時,這個序號將發揮其作用);
(3).def 文件中的注釋由每個注釋行開始處的分號 (;) 指定,且注釋不能與語句共享一行。
由此可以看出,例子中lib.def文件的含義為生成名為“dllTest”的動態鏈接庫,導出其中的add函數,并指定add函數的序號為1。