Fórum Problema com descarregamento de DLL #570339
03/11/2016
0
Estou com um projeto que é composto por um aplicativo e uma dll, ambos utilizam a mesma unit de conexão.
Ao tentar fazer o carregamento(load) da dll e executar funciona normalmente (tirando que notei que a variável global da unit de conexão já está preenchida, mesmo assim crio uma nova instância). Mas na hora de fazer o descarregamento (unload) o aplicativo fica em 100% de processamento e da stack overflow.
Eu queria saber se uma dll feita em delphi pode ter as mesma units dos projeto exe que vai chamá-la ou se alguém sabe como corrigir esse problema.
desde já agradeço
obs: a dll tem um form sendo aberto e fechado em seguida, mas em outras dll que tinha feito que não utilizavam a mesma unit não trava).
Thales Oliveira
Curtir tópico
+ 0Posts
03/11/2016
Joao Ishiwatari
Existem alguns aspectos que você deve observar com relação a dlls no delphi.
Antigamente era necessário adicionar na clausula uses da dll o sharemem da Borland.
as variáveis de retorno e os métodos de invocação das dlls também influenciam. e podem gerar problemas dependendo do que você está fazendo.
Sugiro que de uma pesquisada na internet, tem vários artigos que ajudam a resolver problemas com dlls no delphi.
Gostei + 0
03/11/2016
Thales Oliveira
Na dll já está informado o ShareMem.
Os parâmetros eu já testei em String e pchar:
function Executar(appHandle : THandle; conexao, parametro: String):String;
e
function Executar(appHandle : THandle; conexao, parametro: Pchar): Pchar;
Eu tentei achar na internet mas como já tinha outras dlls e elas funcionam fiquei com pé atrás. A variável global não estava preenchida não, é falha do debugador (DXE2). Só da falha no FreeLibrary mesmo, quando debuguei o EXE ví que o stack trace fica inúmeras vezes a chamada da função de desregristro.
Gostei + 0
03/11/2016
Thales Oliveira
Gostei + 0
03/11/2016
Thales Oliveira
Estou tentando fazer essa prática pois tenho que criar uma maneira de modularizar o sistema que é muito grande e um forte acoplamento.
Se alguém tiver alguma ideia ficarei muito agradecido.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)