建議使用 Visual Studio 2017

module (C++)

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

在 .idl 檔案中定義程式庫區塊。

  
[ module (  
type  
=dll,  
name  
=  
string  
,  
version  
=1.0,  
   uuid=  
uuid  
,  
   lcid=  
integer  
,  
   control=  
boolean  
,  
   helpstring=  
string  
,  
helpstringdll  
=  
string  
,  
helpfile  
=  
string  
,  
helpcontext  
=  
integer  
,  
helpstringcontext  
=  
integer  
,  
hidden  
=  
boolean  
,  
restricted  
=  
boolean  
,  
custom  
=  
string  
,  
   resource_name=  
string  
,  
) ];  
  

參數

type (選擇性)
可以是下列其中一項:

  • dll:新增可讓產生的 DLL 當成同處理序 COM 伺服器運作的函式和類別。 此為預設值。

  • exe:新增可讓產生的可執行檔當成跨處理序 COM 伺服器運作的函式和類別。

  • service:新增可讓產生的可執行檔當成 NT 服務運作的函式和類別。

  • unspecified:停止插入與模組屬性相關的 ATL 程式碼:插入「ATL 模組」類別、全域執行個體 _AtlModule 和輸入點函式。 因為專案中有其他屬性,所以請不要停止插入 ATL 程式碼。

name (選擇性)
程式庫區塊的名稱。

version (選擇性)
您想要指派給程式庫區塊的版本號碼。 預設值為 1.0。

uuid
程式庫的唯一識別碼。 如果您省略此參數,將會自動產生程式庫的識別碼。 您可能需要擷取程式庫區塊的 uuid,做法是使用識別碼 __uuidof(libraryname)

lcid
當地語系化參數。 如需詳細資訊,請參閱 lcid

control (選擇性)
指定程式庫中的所有 coclass 都是控制項。

helpstring
指定類型程式庫。

helpstringdll (選擇性)
設定用來執行文件字串查閱之 .dll 檔案的名稱。 如需詳細資訊,請參閱 helpstringdll

helpfile (選擇性)
類型程式庫之說明檔的名稱。

helpcontext (選擇性)
此類型程式庫的說明識別碼。

helpstringcontext (選擇性)
如需詳細資訊,請參閱 helpstringcontext

hidden (選擇性)
避免顯示整個媒體櫃。 此用法是與控制項搭配使用。 主機需要建立新的類型程式庫,以包裝控制項與擴充屬性。 如需詳細資訊,請參閱 hidden MIDL 屬性。

restricted (選擇性)
不能任意呼叫程式庫成員。 如需詳細資訊,請參閱 restricted MIDL 屬性。

custom (選擇性)
一或多個屬性;這類似於 custom 屬性。custom 的第一個參數是屬性的 GUID。 例如:

[module(custom={guid,1}, custom={guid1,2})]  

resource_name
.rgs 檔案的字串資源識別碼,用來註冊 DLL、可執行檔或服務的應用程式識別碼。 模組是類型服務時,也可以使用這個引數來取得包含服務名稱之字串的識別碼。

System_CAPS_ICON_note.jpg 注意

.rgs 檔案以及包含服務名稱的字串應該包含相同的數值。

除非您將 restricted 參數指定給 emitidl,否則任何使用 C++ 屬性的程式中都需要 module

除了 module 屬性之外,如果原始程式碼同時使用 dispinterfacedualobject 或表示 coclass 的屬性,則會建立程式庫區塊。

一個 .idl 檔案中只允許一個程式庫區塊。 將會合併原始程式碼中的多個模組項目,並實作最新的參數值。

如果在使用 ATL 的專案內使用此屬性,則屬性的行為會變更。 除了上述行為之外,屬性也會插入正確類型的全域物件 (稱為 _AtlModule) 以及其他支援程式碼。 如果屬性是獨立的,則會插入從正確模組類型衍生的類別。 如果將屬性套用至類別,則會新增正確模組類型的基底類別。 正確的類型取決於 type 參數的值:

下列程式碼示範如何在產生的 .idl 檔案中建立程式庫區塊。

// cpp_attr_ref_module1.cpp  
// compile with: /LD  
[module(name="MyLibrary", version="1.2", helpfile="MyHelpFile")];  

下列程式碼示範您可以提供自己的函式實作,而函式會出現在因使用 module 而插入的程式碼中。 如需檢視插入程式碼的詳細資訊,請參閱 /Fx。 若要覆寫 module 屬性所插入的其中一個函式,請建立將包含函式實作的類別,並將 module 屬性套用至該類別。

// cpp_attr_ref_module2.cpp  
// compile with: /LD /link /OPT:NOREF  
#include <atlbase.h>  
#include <atlcom.h>  
#include <atlwin.h>  
#include <atltypes.h>  
#include <atlctl.h>  
#include <atlhost.h>  
#include <atlplus.h>  
  
// no semicolon after attribute block  
[module(dll, name="MyLibrary", version="1.2", helpfile="MyHelpFile")]   
// module attribute now applies to this class  
class CMyClass {  
public:  
BOOL WINAPI DllMain(DWORD dwReason, LPVOID lpReserved) {  
   // add your own code here  
   return __super::DllMain(dwReason, lpReserved);  
   }  
};  

屬性內容

適用於任何位置
可重複
必要屬性
無效屬性

如需詳細資訊,請參閱屬性內容

IDL Attributes
Class Attributes
Stand-Alone Attributes
Typedef, Enum, Union, and Struct Attributes
usesgetlasterror
程式庫
helpcontext
helpstring
helpfile
version
Attributes Samples

顯示: