como descarregar a dll - página 6

 
VBAG писал(а) >>

O protótipo de função principal é selecionado corretamente?

Como gerenciar os fios ATTACH/DETACH?

Onde ler sobre isso e de preferência com exemplos?

Jeffrey Richter "Windows for Professionals".

 
VBAG >> :

Saudações a todos!

O tópico ficou interessante e decidiu verificar o tópico discutido em um exemplo simples que vem com o terminal (projeto DLLSample).

Após a compilação no VS 6.0, a dll cozida funciona com sucesso com o terminal, mas não se descarrega sozinha!


Como você sabe que não está descarregando? Minha amostra DLLS funciona bem.

 
HideYourRichess писал(а) >>

Como você sabe que não está descarregando? Minha amostra DLLS funciona bem.

Indiretamente, o corpo do arquivo dll não é sobregravado até que você feche o terminal.

.

Tenho algumas matrizes estáticas declaradas a nível global, talvez isso a afete.

.

Quero entender como afinar o projeto corretamente e "cuidadosamente" prescrever anexar/destacar, como eu disse.

 

Obrigado, eu estarei atento.

 
VBAG >> :

Saudações a todos!

O tópico ficou interessante e decidiu verificar o tópico discutido em um exemplo simples que vem com o terminal (projeto DLLSample).

Após a compilação no VS 6.0, a dll cozida funciona com sucesso com o terminal, mas não se descarrega sozinha!

Esta é a função principal:

E agora uma pergunta para os conhecedores, que realmente entendem como a dll é e funciona sob o Windows e sabem como compilá-la corretamente em um projeto sob o VS 6.0(por exemplo).

O protótipo da função principal é correto?

Como administrar os fluxos ATTACH/DETACH?

Onde posso ler sobre isso, de preferência com exemplos?

O que atacar? Que dtach? Do que você está falando? A função DllMain em uma dll regular não é de todo necessária! O linker o insere na dll no lugar de você.

http://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.80).aspx

/MD, /MT, /LD (Use Run-Time Library)


/LD

Cria uma DLL.

Passa a opção /DLL para o linker. O linker procura, mas não requer, uma função DllMain. Se você não escrever uma função DllMain, o linker insere uma função DllMain que retorna VERDADEIRO.

Liga o código de inicialização da DLL.


http://msdn.microsoft.com/en-us/library/ms682583(VS.85).aspx

Função DllMain Callback

Um ponto de entrada opcional em uma biblioteca de links dinâmicos (DLL)
 
VBAG >> :

Indiretamente, o corpo do arquivo dll não é sobregravado até que você feche o terminal.

.

No entanto, tenho um par de matrizes estáticas declaradas a nível global, talvez isso o afete.


Então você não tem realmente uma amostra DLLS, como você afirmou anteriormente... certo.

VBAG >> :

Eu gostaria de entender como afinar o projeto "cuidadosamente" para escrever anexar/destacar, como eu disse.

 
HideYourRichess писал(а) >>

Então você não tem realmente uma amostra DLLS, como você alegou anteriormente? certo.

Bem, em geral, sim, se você usar explicitamente o DllMain. E, em geral, todas as configurações do projeto devem ser tiradas do amostrador. Megakvot recomenda prescrever DllMain explicitamente, embora se você escrever em Delphi você não pode prescrever DllMain lá e colocar todos os attach/detach na inicialização e finalização.

Exceto que acrescentei duas matrizes estáticas em nível global, o projeto inteiro é retirado da amostra DLLS.

Eu chamo a função primitiva na EA de funcionar no testador. Quando os testes são concluídos, a DLL é mantida na memória. Aqui está a situação.

 
VBAG >> :

Exceto que acrescentei duas matrizes estáticas em nível global, o projeto inteiro é retirado da amostra DLLS.

Eu chamo a função primitiva na EA de funcionar no testador. Quando os testes são concluídos, a DLL é mantida na memória. Aqui está a situação.

Aha, então o problema ocorre no testador. Não é um roteiro, e não um indicador - é o Expert Advisor. Bem, como esta EA se comporta em condições normais, não no testador?


A propósito, "duas arrays estáticas em nível global" em teoria não devem afetar a dll de forma alguma. Especialmente se você não usar o dll para acessá-los de forma alguma.


Engraçado. Falta um pouco do texto no meu post que você estava respondendo, mesmo que eu não o tenha apagado. O fórum está com problemas.

 
HideYourRichess >> :

Aha, então o problema surge no testador. E não é nem um roteiro, nem um indicador - é um EA. Bem, como esta EA se comporta em condições normais de não-teste?

Na verdade, eu também tive todos esses problemas com a dll há um ano atrás, quando tive a EA...

comparei a corrida do meu testador com a do sistema.

Mas... alguém conseguiu colocar todos para baixo algumas vezes sobre mãos tortas e erros no programa.

Deus proíba alguém de ser tal chefe :-(.

P.S.: dll polinked com bibliotecas de tempo de execução VC 2005: após indicador e roteiro

>> tudo descarrega normalmente.

 
jartmailru >> :

Na verdade, eu também tive todos esses problemas com a dll há um ano atrás, quando tive a EA...

comparei a corrida do meu testador com a do sistema.

Mas... alguém conseguiu colocar todos para baixo algumas vezes sobre mãos tortas e erros no programa.

Deus proíba alguém de ser tal chefe :-(.

P.S.: dll Polinked com bibliotecas de tempo de execução VC 2005: após indicador e roteiro

tudo descarrega bem.

Mais uma vez, eu não tenho problemas com a dll em nenhum lugar. Se você tem um problema, ele é seu problema de programação, provavelmente não é culpa da MS ou da MT. E o fato de que você precisa usar o "velho" VC - isso deve ser claro.