como descarregar a dll - página 11

 
AlexEro >> :

Vou adivinhar que não se trata necessariamente do testador de MT. Se o testador MT de alguma forma tiver um loop LoadLibrary no início ... FreeLibrary no final, e este loop é executado muitas vezes, então o Windows irá apenas bloquear a DLL na memória até tempos melhores e não pensará em fazer nada para libertá-la, mas apenas imitá-la. Isto é feito no Windows para armazenar bibliotecas freqüentemente usadas.


Você pode assumir o que quiser, mas os resultados de um simples experimento mostram que a dll é descarregada do testador. Por que todas essas ficções, não está claro. Se você não fechar o testador, então sim, a dll será pendurada, mas quando você fecha o testador, ele é liberado. Pelo menos no meu caso.

 
HideYourRichess >> :

Você pode assumir qualquer coisa, mas os resultados de um simples experimento mostram que a dll é descarregada do testador. Eu não entendo por que todas essas fabricações. Se você não fechar o testador, então sim, a dll será pendurada, mas quando você fecha o testador, ele é liberado. Pelo menos para mim é assim.


Oh, eu tive um pensamento assustador - talvez HideYourRichess seja o funcionário da MetaQuotes, que escreveu aquele bloco de DLL's upload no MT4? Então, não há mais perguntas. Se funciona para ele, DEVE funcionar para os outros.

 
Uma teoria de conspiração dos desenvolvedores de MT contra programadores pobres está em ordem.
 

E eu mesmo verifiquei - neste caso em particular, uma simples DLL jartmailru é mantida pelo testador. Está segurando-o com muita força, meu girino, e não o deixa entrar, demônio. O que é, no entanto, normal e compreensível.

O Process Explorer (com plugin), é claro, descarrega-o de qualquer forma - por descarga dura.

O desbloqueador 1.8.7 não funciona em absoluto (?).

A propósito, se a biblioteca usa COM+ 2.0, e também multithreaded (que é complexo, como eu disse anteriormente), então a Microsoft indica um atraso de 10 MINUTOS para seu descarregamento real, embora estejamos falando de outra função de lançamento:


A CoFreeUnusedLibraries não libera imediatamente DLLs que não tenham nenhum objeto ativo. Há um atraso de dez minutos para apartamentos multithreaded (MTAs) e apartamentos neutros (NAs). Para apartamentos de uma única rua (STAs), não há atraso. O atraso de dez minutos para a CoFreeUnusedLibraries é para evitar condições de corrida multithread causada pelo descarregamento de um componente DLL.

http://support.microsoft.com/kb/301357

 
HideYourRichess >> :

Eu acredito de bom grado que algo não está funcionando lá, mas eu não executei seu dll suspeito. Sou preguiçoso demais para compilá-lo de seu VC8.0 a VC6.0. Também sou preguiçoso demais para verificar a compatibilidade das versões da crt que você usa. Você pode ver no farol usual que você tem uma ligação dll para msvcr80, mas o exemplo usa msvcrt. Uma coisa pequena, mas não agradável. Etc.

Somente este fato é irrelevante, Sr. Slippery.

Com o roteiro - tudo é descarregado.

Oops... ficou embaraçado novamente :-).

Mas está tudo bem.

É relativo agora:

HideYourRichess >> :

Você pode assumir qualquer coisa, mas os resultados de um simples experimento mostram que a dll do testador é descarregada. Por que todas essas ficções, eu não entendo. Se você não fechar o testador, a dll estará pendurada, mas depois que você fechar o testador, ela será liberada. Pelo menos eu o tenho.

Aí está.

O homem chegou aos testes.

Bem-vindo ao mundo real!

.

Verifiquei o fechamento do painel do testador.

Então, quantas coisas inteligentes são programadas no MetaTrader!

É verdade, sem levar em conta o ciclo de desenvolvimento destes mesmos Dlls - mas isso são as pequenas coisas.

Mas é mais fácil fechar todo o MetaTrader em operação :-).

.

O mais importante: você não precisa apresentar o fechamento do painel de teste como um fato e argumento óbvio,

Embora seu talento como pesquisador em casos em que você precisa "derrubar" seu oponente,

sem dúvida que sim. Quantos subordinados você diria que tem no momento?

.

A frase no original deve soar assim:

O testador segurará o Dll até que o metatrader feche.

a menos que você faça um movimento não óbvio e feche o painel de teste :-).

.

Conclusão: se você não fechar o painel de teste com seu Dll - ele tem insetos como todos os outros! :-P

 

O Process Explorer (com plugin), é claro, ainda descarrega-o mesmo com o testador - por descarga dura.

Reiniciar o testador depois de descarregar a DLL via PrExpl - sem problemas. Isto é, pessoalmente, eu preferiria classificar este inconveniente (vamos chamá-lo assim) como uma falha do testador, em vez de uma característica. As pessoas sérias criarão suas DLL em uma janela diferente, por que saltariam em janelas diferentes, as fechariam, as abririam?

 
AlexEro >> :

E eu mesmo verifiquei - neste caso em particular, uma simples DLL de jartmailru é mantida pelo testador. O testador a segura com muita força e não a deixa entrar, diabinho. Mas é normal e compreensível.


De quem é a culpa? Eu acho que a culpa é do programador. Porque outra dll, de outro programador, não faz isso.

 
HideYourRichess >> :

>> De quem é a culpa? >> Acho que é um programador desonesto.

O que você quer dizer, tio? É mantida pela MT - MQ's Tester, que não a descarrega da FreeLibrary. Por que você está cagando na sua empresa? Você mesmo escreveu este bug, e agora você nos pergunta no fórum?

 

(na voz de uma criança, como nos filmes pioneiros de Stalin dos anos 1940-1950)

Pessoal, vamos ajudar a MetaQuotes! Será mais fácil para nós escrever programas MQL4! Vamos dizer ao programador líder da MetaQuotes, chamado HideYourRichess, como as DLLs são instaladas, carregadas, descarregadas e executadas! Devemos? А?! Coloco isso à votação. Os que estiverem a favor, por favor levantem as mãos e o serviço de mensagens das janelas.

 

Idiota.