Recomendações para o desenvolvimento dos dois projetos isolados em pastas separadas:
1) Criar novo projeto: File -> New -> Other -> Dll Wizard
Project1 -> ProjDll.bpr
Unit1 -> DllMain.cpp
2) Acrescentar um Header File para a DLL: File -> New -> Other -> Header File
File1.h -> DllMain.h
3) Incluir em DllMain.h a diretiva de compilador:
#include "MinhaClasse.h"
4) Incluir em DllMain.cpp a diretiva de compilador:
#include "DllMain.h"
5) Criar nova Unit: File -> New -> Unit
Unit2.cpp -> MinhaClasse.cpp
Unit2.h -> MinhaClasse.h
6) Declarar a classe em MinhaClasse.h com a especificação:
class __declspec(dllexport) MinhaClasse
{
...
};
7) Gerar a DLL: Project -> Build ProjDLL
8) Depurar erros da DLL e prosseguir somente quando estiver tudo correto.
9) Criar novo projeto: File -> New -> Application
Project1.bpr -> ProjDemo.bpr
Project1.cpp -> ProjDemo.cpp
Unit1.cpp -> DemoFormMain.cpp
Unit1.h -> DemoFormMain.h
10) Copiar da pasta do projeto da DLL os arquivos:
ProjDll.lib
ProjDll.dll
DllMain.h
MinhaClasse.h
11) Acrescentar no ProjDemo: Project -> Add to Project...
Selecionar aruivos do tipo Library (*.lib)
Indicar o arquivo a ser adicionado ao projeto: ProjDll.lib
12) Acrescentar no DemoFormMain.h a diretiva de compilador:
#include "DllMain.h"
14) Substituir a diretiva de compilador em MinhaClasse.h de/para:
dllexport -> dllimport
15) A partir deste estágio, já podemos declarar variáveis do tipo MinhaClasse:
MinhaClasse obj1MinhaClasse;
MinhaClasse *obj2MinhaClasse;
16) Se a declaração for para objeto estático, usar:
obj1MinhaClasse.Atributo
obj1MinhaClasse.Método()
17) Se a declaração for para objeto dinâmico, usar:
obj2MinhaClasse = new MinhaClasse();
...
obj2MinhaClasse->Atributo
obj2MinhaClasse->Método()
...
delete obj2MinhaClasse
18) Atenção para o ciclo vida dos objetos instanciados:
estaticamente -> escopo da função
dinamicamente -> requer Delete antes do término da função/programa
Até a próxima.
Nenhum comentário:
Postar um comentário