Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode exportar dados, funções, classes ou funções de membro de classe de uma DLL usando a __declspec(dllexport) palavra-chave.
__declspec(dllexport) Adiciona a diretiva de exportação ao arquivo de objeto para que você não precise usar um arquivo .def.
Essa conveniência é mais aparente ao tentar exportar nomes de função C++ decorados. Como não há nenhuma especificação padrão para a decoração de nomes, o nome de uma função exportada pode mudar entre as versões do compilador. Se utilizar __declspec(dllexport), será necessário recompilar a DLL e os arquivos .exe dependentes apenas para considerar quaisquer alterações na convenção de nomenclatura.
Muitas diretivas de exportação, como ordinais, NONAME e PRIVATE, podem ser feitas somente em um arquivo .def, e não há como especificar esses atributos sem um arquivo .def. No entanto, usar __declspec(dllexport) além de usar um arquivo .def não causa erros de compilação.
Para exportar funções, a __declspec(dllexport) palavra-chave deve aparecer à esquerda da palavra-chave calling-convention, se uma palavra-chave for especificada. Por exemplo:
__declspec(dllexport) void __cdecl Function1(void);
Para exportar todos os membros de dados públicos e funções de membro em uma classe, a palavra-chave deve aparecer à esquerda do nome da classe da seguinte maneira:
class __declspec(dllexport) CExampleExport : public CObject
{ ... class definition ... };
Observação
__declspec(dllexport) não pode ser aplicado a uma função com a __clrcall convenção de chamada.
Ao criar sua DLL, você normalmente cria um arquivo de cabeçalho que contém os protótipos de função e/ou classes que você está exportando e adiciona __declspec(dllexport) às declarações no arquivo de cabeçalho. Para tornar seu código mais legível, defina uma macro para __declspec(dllexport) e use a macro com cada símbolo que você está exportando:
#define DllExport __declspec( dllexport )
__declspec(dllexport) armazena nomes de função na tabela de exportação da DLL. Se você quiser otimizar o tamanho da tabela, consulte Exportando funções de uma DLL por ordinal em vez de por nome.