2011-09-02 73 views
0

在export.def文件一個可以把這樣的詩句:導出功能

LIBRARY plug 
EXPORTS 
    funcName 
    main=funcName 

什麼是這樣的方式導出功能的效果?它是否導出屬於同一個函數的兩個函數名?還是隻是出口功能,給它另一個名字?

+1

我沒有意識到DEF文件仍在使用。我認爲它們被大量棄用,並且非常沮喪地使用它們。 –

+2

您可以發表一個鏈接,告訴它爲什麼被棄用?找不到與Google相關的任何內容。 – Vadim

+0

模塊定義文件不被棄用。它們是可選的,因爲您可以使用__declspec(dllexport)和鏈接器開關完成大多數事情。但是你可以在沒有dllexport的情況下創建一個導出別名(這就是這個問題的關鍵),你也不能指定序號(有時是二進制兼容性所必需的)。 .def文件將你需要了解的DLLs配置信息放在一個地方(對源代碼管理有用)。否則,你必須通過項目文件或makefile(用於鏈接器選項)和源文件(用於dllexports)進行探索。 –

回答

2

根據MSDN

出口關鍵字可以是在同一行上如前面行上的第一個定義或 。 .def文件可以包含一個或多個EXPORTS 語句。

語法出口的定義是:

entryname[=internalname] [@ordinal [NONAME]] [PRIVATE] [DATA] 

EntryName是$,你要導出的函數或變量名。 這是必填項。如果您導出的名稱與 DLL中的名稱不同,請在帶有內部名稱的DLL中指定導出名稱。對於 例如,如果你的DLL導出的函數,func1的(),你希望它是作爲FUNC2 (),應指定:

EXPORTS func2=func1