Поделиться через


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

Параметры

type
(Необязательно) Может быть одним из следующих вариантов:

  • dll Добавляет функции и классы, позволяющие результирующей библиотеке DLL функционировать в качестве внутреннего COM-сервера. Это значение по умолчанию.

  • exe Добавляет функции и классы, позволяющие результирующий исполняемый файл функционировать как непроцессный COM-сервер.

  • service Добавляет функции и классы, позволяющие результирующий исполняемый файл функционировать в качестве службы NT.

  • unspecified Отключает внедрение кода ATL, связанного с атрибутом модуля: внедрение класса модуля ATL, глобальный экземпляр _AtlModule и функции точки входа. Не отключает внедрение кода ATL из-за других атрибутов в проекте.

name
(Необязательно) Имя блока библиотеки.

version
(Необязательно) Номер версии, который необходимо назначить блоку библиотеки. Значение по умолчанию — 1,0.

uuid
Уникальный идентификатор для библиотеки. Если этот параметр опущен, идентификатор для библиотеки будет создан автоматически. Возможно, потребуется получить uuid блока библиотеки, который можно сделать с помощью идентификатора __uuidof(имя библиотеки).

lcid
Параметр локализации. Дополнительные сведения см. в описании lcid .

control
(Необязательно) Указывает, что все соклассы в библиотеке являются элементами управления.

helpstring
Указывает библиотеку типов.

helpstringdll
(Необязательно) Задает имя файла .dll для выполнения поиска строки документа. Дополнительные сведения см. в описании helpstringdll .

helpfile
(Необязательно) Имя файла справки для библиотеки типов.

helpcontext
(Необязательно) Идентификатор справки для этой библиотеки типов.

helpstringcontext
(Необязательно) Дополнительные сведения см . в справке .

hidden
(Необязательно) Запрещает отображение всей библиотеки. Этот режим предназначен для использования с элементами управления. Узлы должны создать новую библиотеку типов, инкапсулирующую элемент управления с расширенными свойствами. Дополнительные сведения см. в описании атрибута MIDL hidden .

restricted
(Необязательно) Члены библиотеки не могут вызываться произвольно. Дополнительные сведения см. в описании атрибута MIDL restricted .

custom
(Необязательно) Один или несколько атрибутов; это аналогично пользовательскому атрибуту. Первым параметром для настраиваемого является GUID атрибута. Например:

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

resource_name
Идентификатор строкового ресурса RGS-файла, используемый для регистрации идентификатора приложения для библиотеки DLL, исполняемого файла или службы. Если модуль имеет тип service, этот аргумент также используется для получения идентификатора строки, содержащей имя службы.

Примечание.

Как RGS-файл, так и строка с именем службы должны содержать одинаковое числовое значение.

Замечания

Если не указать параметр restricted для emitidl, module требуется в любой программе, использующей атрибуты C++.

Блок библиотеки создается, если в дополнение к атрибуту module исходный код также использует dispinterface, dual, objectлибо атрибут, подразумевающий coclass.

В IDL-файле разрешен один блок библиотеки. Несколько записей module в исходном коде будут объединены с применением самых последних значений параметров.

Если этот атрибут используется в проекте, где применяется ATL, поведение атрибута изменяется. В дополнение к приведенному выше поведению атрибут также вставляет глобальный объект (называемый _AtlModule) правильного типа и дополнительный код поддержки. Если атрибут является автономным, он вставляет класс, производный от правильного типа module. Если атрибут применяется к классу, он добавляет базовый класс правильного типа module. Правильный тип определяется значением параметра типа :

  • type = dll

    CAtlDllModuleT используется в качестве базового класса и стандартных точек входа библиотеки DLL, необходимых для COM-сервера. Это точки входа: DllMain, DllRegisterServer, DllUnRegisterServer, DllCanUnloadNowи DllGetClassObject.

  • type = exe

    CAtlExeModuleT используется в качестве базового класса и стандартной точки входа исполняемого файла WinMain.

  • type = service

    CAtlServiceModuleT используется в качестве базового класса и стандартной точки входа исполняемого файла WinMain.

  • type = unspecified

    Отключает внедрение кода ATL, связанного с атрибутом module.

Пример

В следующем коде показано, как создать блок библиотеки в сформированном 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);
   }
};

Требования

Контекст атрибута Значение
Относится к В любом месте
Повторяемый No
Обязательные атрибуты нет
Недопустимые атрибуты нет

Дополнительные сведения см. в разделе Контексты атрибутов.

См. также

Атрибуты IDL
Атрибуты классов
Изолированные атрибуты
Атрибуты Typedef, Enum, Union и Struct
usesgetlasterror
библиотека
helpcontext
helpstring
helpfile
version