Compartilhar via


module (C++)

Define o bloco de biblioteca no arquivo .idl.

Sintaxe

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

Parâmetros

tipo
(Opcional) Pode ser uma destas opções:

  • dll Adiciona funções e classes que permitem que a DLL resultante funcione como um servidor COM em processo. Esse é o valor padrão.

  • exe Adiciona funções e classes que permitem que o executável resultante funcione como um servidor COM fora do processo.

  • service Adiciona funções e classes que permitem que o executável resultante funcione como um serviço NT.

  • unspecified Desabilita a injeção de código ATL relacionada ao atributo de módulo: a injeção da classe módulo ATL, _AtlModule de instância global e funções de ponto de entrada. Não desabilita a injeção de código ATL devido a outros atributos no projeto.

name
(Opcional) O nome do bloco de biblioteca.

version
(Opcional) O número de versão que você deseja atribuir ao bloco de biblioteca. O valor padrão é 1.0.

uuid
A ID exclusiva da biblioteca. Se você omitir esse parâmetro, uma ID será gerada automaticamente para a biblioteca. Você pode precisar recuperar a uuid de seu bloco de biblioteca, o que pode ser feito usando o identificador __uuidof(libraryname).

lcid
O parâmetro de localização. Confira lcid para obter mais informações.

control
(Opcional) Especifica que todas as coclasses na biblioteca são controles.

helpstring
Especifica a biblioteca de tipos.

helpstringdll
(Opcional) Define o nome do arquivo .dll a ser usado para realizar uma pesquisa de cadeia de caracteres de documento. Confira helpstringdll para obter mais informações.

helpfile
(Opcional) O nome do arquivo de Ajuda para a biblioteca de tipos.

helpcontext
(Opcional) A ID da Ajuda para este tipo de biblioteca.

helpstringcontext
(Opcional) Confira helpstringcontext para obter mais informações.

hidden
(Opcional) Impede que toda a biblioteca seja exibida. Destina-se ao uso com controles. Hosts precisam criar uma nova biblioteca de tipos que encapsule o controle com propriedades estendidas. Confira o atributo MIDL hidden para obter mais informações.

restricted
(Opcional) Os membros da biblioteca não podem ser chamados arbitrariamente. Confira o atributo MIDL restricted para obter mais informações.

personalizado
(Opcional) Um ou mais atributos; é semelhante ao atributo custom. O primeiro parâmetro para custom é a GUID do atributo. Por exemplo:

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

resource_name
A ID do recurso de cadeia de caracteres do arquivo .rgs usado para registrar a ID do APLICATIVO da DLL, executável ou serviço. Quando o módulo é de tipo de serviço, esse argumento também é usado para obter a ID da cadeia de caracteres que contém o nome do serviço.

Observação

Tanto o arquivo .rgs quanto a cadeia de caracteres que contém o nome do serviço devem conter o mesmo valor numérico.

Comentários

A menos que você especifique o parâmetro restricted para emitidl, module é necessário em qualquer programa que use atributos C++.

Um bloco de biblioteca será criado se, além do atributo module, o código-fonte também usar dispinterface, dual, object ou um atributo que implica coclasse.

Um bloco de biblioteca é permitido em um arquivo .idl. Várias entradas de módulo no código-fonte serão mescladas, com os valores de parâmetro mais recentes sendo implementados.

Se esse atributo for usado em um projeto que usa ATL, o comportamento do atributo será alterado. Além do comportamento acima, o atributo também insere um objeto global (chamado _AtlModule) do tipo correto e do código de suporte adicional. Se o atributo for autônomo, ele inserirá uma classe derivada do tipo de módulo correto. Se o atributo for aplicado a uma classe, ele adiciona uma classe base do tipo de módulo correto. O tipo correto é determinado pelo valor do parâmetro de tipo :

Exemplo

O código a seguir mostra como criar um bloco de biblioteca no arquivo .idl gerado.

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

O código a seguir mostra que você pode fornecer sua própria implementação de uma função que seria exibida no código que foi injetado como resultado do uso do módulo. Confira /Fx para obter mais informações sobre como exibir o código injetado. Para substituir uma das funções inseridas pelo atributo module, crie uma classe que conterá sua implementação da função e faça com que o atributo module se aplique a essa classe.

// 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);
   }
};

Requisitos

Contexto do atributo Valor
Aplicável ao Anywhere
Repetível Não
Atributos necessários Nenhum
Atributos inválidos Nenhum

Para obter mais informações, confira Contextos de Atributo.

Confira também

Atributos de IDL
Atributos de classe
Atributos independentes
Atributos Typedef, Enum, Union e Struct
usesgetlasterror
biblioteca
helpcontext
helpstring
helpfile
version