Exportar de uma DLL usando __declspec(dllexport)
A Microsoft introduziu __export na versão do Visual C++ para permitir que o compilador a gerar automaticamente os nomes de exportar e coloque-os em um arquivo .lib compilador de 16 bit.Este arquivo .lib, em seguida, pode ser usado como um estático .lib vincular com uma DLL.
Em versões mais recentes do compilador, você pode exportar dados, funções, classes ou funções de membro de classe de uma DLL usando o __declspec(dllexport) palavra-chave.__declspec(dllexport) adiciona a diretiva de exportar para o arquivo de objeto sendo assim, você não precisa usar um arquivo .def.
Essa conveniência fica mais aparente quando tentar exportar decorada C++ função nomes.Como não houver nenhuma especificação de decoração de nome padrão, o nome de uma função exportada pode alterar entre versões de compilador.Se você usar __declspec(dllexport), recompilar os arquivos .exe dependentes e DLL é necessário somente à conta que as alterações de convenção de nomeclatura.
Muitos exportar diretivas, sistema autônomo números ordinais, NONAME e particular, podem ser feitas apenas em um arquivo .def e não é possível especificar esses atributos sem um arquivo .def.No entanto, usando __declspec(dllexport) além de ser usado 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 a convenção de chamada, se uma palavra-chave for especificada.Por exemplo:
__declspec(dllexport) void __cdecl Function1(void);
Para exportar todos sistema autônomo dados públicos de membros e funções de membro em uma classe, a palavra-chave deverá aparecer à esquerda do nome de classe da seguinte maneira:
class __declspec(dllexport) CExampleExport : public CObject
{ ... class definition ... };
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 adicionar __declspec(dllexport) para as declarações no arquivo de cabeçalho.Para tornar seu código mais legível, definir uma macro para __declspec(dllexport) e usar a macro com cada símbolo que você está exportando:
#define DllExport __declspec( dllexport )
__declspec(dllexport) armazena os nomes de funções na tabela de exportar da DLL.Se desejar otimizar o dimensionar da tabela, consulte Exportar funções de uma DLL por ordinal em vez de por nome.
Observação: |
---|
Ao portar código-fonte DLL do Win16 para Win32, substituir cada ocorrência de __export with __declspec(dllexport). |
sistema autônomo referência, pesquise o arquivo de cabeçalho do Win32 WinBase.h.Ele contém exemplos de __declspec(DllImport) uso.