次の方法で共有


module (C++)

.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,
) ];

パラメーター

  • (オプション)
    次のいずれかの値を指定します。

    • dll   結果の DLL がインプロセス COM サーバーとして機能できるように、関数やクラスを追加します。 これが既定値です。

    • exe   結果の実行可能プログラムがアウトプロセス COM サーバーとして機能できるように、関数やクラスを追加します。

    • service   結果の実行可能プログラムが NT サービスとして機能できるように、関数やクラスを追加します。

    • 不特定モジュール属性に関連する ATL コードの挿入を無効にします。注入の ATL モジュール クラスのグローバル インスタンス _AtlModule、エントリ ポイント関数。 プロジェクト内の他の属性に関連する ATL コードの挿入は無効にしません。

  • (オプション)
    ライブラリ ブロックの名前。

  • バージョン(オプション)
    ライブラリ ブロックに割り当てるバージョン番号。 既定値は 1.0 です。

  • uuid
    ライブラリの一意の ID。 このパラメーターを省略すると、ライブラリの ID が自動的に生成されます。 ライブラリ ブロックの uuid を取得する必要がある場合は、識別子 __uuidof(libraryname) を使用します。

  • lcid
    ローカライズ パラメーター。 詳細については、「lcid」を参照してください。

  • control (省略可能)
    ライブラリ内のすべてのコクラスがコントロールであることを指定します。

  • helpstring
    タイプ ライブラリを指定します。

  • helpstringdll(オプション)
    ドキュメントの文字列の検索に使用する .dll ファイルの名前を設定します。 詳細については、「helpstringdll」を参照してください。

  • helpfile (省略可能)
    タイプ ライブラリのヘルプ ファイルの名前。

  • helpcontext (省略可能)
    このタイプ ライブラリのヘルプ ID。

  • helpstringcontext (省略可能)
    詳細については、「helpstringcontext」を参照してください。

  • hidden (省略可能)
    ライブラリ全体を非表示にします。 コントロールと一緒に使用することを前提としています。 ホストでは、エクステンダー プロパティを持つコントロールをラップするために、新しいタイプ ライブラリを作成する必要があります。 詳細については、MIDL 属性 hidden を参照してください。

  • restricted (省略可能)
    ライブラリのメンバーを任意に呼び出すことができないように指定します。 詳細については、MIDL 属性 restricted を参照してください。

  • カスタム(オプション)
    1 つ以上の属性。属性 custom と同じです。 custom の最初のパラメーターは属性の GUID です。 次に例を示します

    [module(custom={guid,1}, custom={guid1,2})]
    
  • resource_name
    DLL、実行可能ファイル、またはサービスの APP ID の登録に使用する .rgs ファイルの文字列リソース ID。 モジュールの型がサービスである場合は、サービス名を含む文字列の ID を取得する場合にも使用します。

注意

.rgs ファイルとサービス名を含む文字列には、同じ数値が含まれます。

解説

emitidlrestricted パラメーターを指定する場合を除き、C++ 属性を使用するすべてのプログラムには module が必要です。

属性 module のほかに、dispinterfacedualobject、または coclass を表す属性をソース コードで使用する場合は、ライブラリ ブロックが作成されます。

.idl ファイル内で使用できるライブラリ ブロックは 1 つです。 ソース コード内の複数のモジュール エントリがマージされ、最新のパラメーター値が実装されます。

この属性が ATL を使用するプロジェクト内で使用される場合、属性の動作は異なります。 上の動作のほかに、適切な型のグローバル オブジェクト (_AtlModule) と追加のサポート コードが挿入されます。 スタンドアロン属性の場合は、適切なモジュール型から派生したクラスが挿入されます。 属性がクラスに適用されている場合は、適切なモジュール型の基本クラスが追加されます。 適切な型は、type パラメーターの値で決まります。

使用例

生成される .idl ファイルにライブラリ ブロックを作成する方法を次のコード例に示します。

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

以下のコードでは、module を使用することにより挿入されたコードに独自の関数の実装を設定できることを示しています。 挿入されたコードの表示の詳細については、「/Fx (挿入されたコードのマージ)」を参照してください。 module 属性によって挿入された関数の 1 つをオーバーライドするには、関数の実装を含むクラスを作成し、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);
   }
};

必要条件

属性コンテキスト

対象

任意

複数回の適用

不要

必要な属性

[なし]

無効な属性

[なし]

詳細については、「属性コンテキスト」を参照してください。

参照

参照

usesgetlasterror

library

helpcontext

helpstring

helpfile

version (C++)

その他の技術情報

IDL 属性

クラス属性

スタンドアロン属性

Typedef、Enum、Union、および Struct 型の属性

ATL サンプル