程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c++ exports def文件,exportsdef文件

c++ exports def文件,exportsdef文件

編輯:C++入門知識

c++ exports def文件,exportsdef文件


https://msdn.microsoft.com/zh-cn/library/hyx1zcd3(v=vs.80).aspx

EXPORTS

引入了一個由一個或多個 definitions(導出的函數或數據)組成的節。每個定義必須在單獨一行上。

EXPORTS
definitions

備注

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

導出 definitions 的語法為:

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

entryname 是要導出的函數名或變量名。這是必選項。如果導出的名稱與 DLL 中的名稱不同,則通過 internalname 指定 DLL 中導出的名稱。例如,如果 DLL 導出函數 func1(),要將它用作 func2(),則應指定:

EXPORTS
func2=func1

@ordinal 允許指定是序號而不是函數名將進入 DLL 的導出表。這有助於最小化 DLL 的大小。.LIB 文件將包含序號與函數之間的映射,這使您得以像通常在使用 DLL 的項目中那樣使用函數名。

可選的 NONAME 關鍵字允許只按序號導出,並減小結果 DLL 中導出表的大小。但是,如果要在 DLL 上使用 GetProcAddress,則必須知道序號,因為名稱將無效。

可選的 PRIVATE 關鍵字禁止將 entryname 放到由 LINK 生成的導入庫中。它對同樣是由 LINK 生成的圖像中的導出無效。

可選的 DATA 關鍵字指定導出的是數據,而不是代碼。例如,可以導出數據變量,如下所示:

EXPORTS
i DATA

當對同一導出使用 PRIVATEDATA 時,PRIVATE 必須位於 DATA 的前面。

有三種導出定義的方法,按照建議的使用順序依次為:

所有這三種方法可以用在同一個程序中。LINK 在生成包含導出的程序時還創建導入庫,除非生成中使用了 .exp 文件。

以下是 EXPORTS 節的示例:

EXPORTS
   DllCanUnloadNow      @1     PRIVATE   DATA
   DllWindowName = Name        DATA
   DllGetClassObject    @4 NONAME   PRIVATE
   DllRegisterServer    @7
   DllUnregisterServer

注意,使用 .def 文件從 DLL 中導出變量時,不需要在變量上指定 __declspec(dllexport)。但是,在任何使用 DLL 的文件中,仍必須在數據聲明上使用 __declspec(dllimport)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved