come scaricare la dll - pagina 6

 
VBAG писал(а) >>

Il prototipo di funzione principale è selezionato correttamente?

Come gestire i thread ATTACH/DETACH?

Dove leggere su questo e preferibilmente con esempi?

Jeffrey Richter "Windows per professionisti".

 
VBAG >> :

Saluti a tutti!

L'argomento si è fatto interessante e ho deciso di verificare l'argomento discusso su un semplice esempio che viene fornito con il terminale (progetto DLLSample).

Dopo aver compilato in VS 6.0, la dll cotta funziona con il terminale con successo, ma non si scarica!


Come fai a sapere che non sta scaricando? Il mio DLLSample funziona bene.

 
HideYourRichess писал(а) >>

Come fai a sapere che non si sta scaricando? Il mio DLLSample funziona bene.

Indirettamente, il corpo del file dll non viene sovrascritto fino alla chiusura del terminale.

.

Ho un paio di array statici dichiarati a livello globale, forse lo influenza.

.

Voglio capire come sintonizzare correttamente il progetto e prescrivere "accuratamente" l'attacca/stacca come dico io.

 

Grazie, starò a guardare.

 
VBAG >> :

Saluti a tutti!

L'argomento si è fatto interessante e ho deciso di controllare l'argomento discusso su un semplice esempio che viene fornito con il terminale (progetto DLLSample).

Dopo aver compilato in VS 6.0, la dll cotta funziona con il terminale con successo, ma non si scarica!

Ecco la funzione principale:

E ora una domanda per gli intenditori, che capiscono davvero come è e funziona la dll sotto Windows e sanno come compilarla correttamente in un progetto sotto VS 6.0 (per esempio).

Il prototipo della funzione principale è corretto?

Come gestire i flussi ATTACH/DETACH?

Dove posso leggere qualcosa al riguardo, preferibilmente con esempi?

Cosa atach? Quale dtach? La funzione DllMain in una normale DLL non è affatto necessaria! Il linker lo inserisce nella dll al posto vostro.

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

/MD, /MT, /LD (utilizzare la libreria run-time)


/LD

Crea una DLL.

Passa l'opzione /DLL al linker. Il linker cerca, ma non richiede, una funzione DllMain. Se non scrivete una funzione DllMain, il linker inserisce una funzione DllMain che restituisce TRUE.

Collega il codice di avvio della DLL.


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

Funzione di callback di DllMain

Un punto di ingresso opzionale in una libreria a collegamento dinamico (DLL)
 
VBAG >> :

Indirettamente, il corpo del file dll non viene sovrascritto fino alla chiusura del terminale.

.

Tuttavia, ho un paio di array statici dichiarati a livello globale, forse lo influenza.


Quindi in realtà non hai un DLLSample, come hai affermato prima, giusto.

VBAG >> :

Vorrei capire come mettere a punto il progetto "accuratamente" per scrivere attach/detach come ho detto.

 
HideYourRichess писал(а) >>

Quindi in realtà non hai DLLSample, come hai affermato prima, giusto.

Beh, in generale sì, se usate esplicitamente DllMain. E in generale, tutte le impostazioni del progetto dovrebbero essere prese dal campionatore. Megakvot raccomanda di prescrivere DllMain esplicitamente, anche se se si scrive in Delphi non si può prescrivere DllMain lì e mettere tutti gli attach/detach in inizializzazione e finalizzazione.

Tranne che ho aggiunto due array statici a livello globale, l'intero progetto è preso da DLLSample.

Chiamo la funzione primitiva nell'EA in esecuzione nel tester. Quando il test è completato, la DLL è tenuta in memoria. Ecco la situazione.

 
VBAG >> :

Tranne che ho aggiunto due array statici a livello globale, tutto il progetto è preso da DLLSample.

Chiamo la funzione primitiva nell'EA in esecuzione nel tester. Quando il test è completato, la DLL è tenuta in memoria. Ecco la situazione.

Aha, quindi il problema si verifica nel tester. Non è uno script e non è un indicatore - è l'Expert Advisor. Bene, come si comporta questo EA in condizioni normali, non nel tester?


A proposito, "due array statici a livello globale" in teoria non dovrebbero influenzare la DLL in alcun modo. Soprattutto se non si usa affatto la dll per accedervi.


Divertente. Manca parte del testo del mio post a cui stavi rispondendo, anche se non l'ho cancellato. Il forum ha dei problemi.

 
HideYourRichess >> :

Aha, quindi il problema sorge nel tester. E non è né uno script, né un indicatore - è un EA. Bene, come si comporta questo EA in condizioni normali, non da tester?

In realtà, ho avuto tutti questi problemi con la dll anche un anno fa, quando avevo EA-

Ho controllato la corsa del mio tester contro quella del sistema.

Ma... qualcuno è riuscito a mettere tutti giù qualche volta per le mani storte e gli errori nel programma.

Dio non voglia che qualcuno sia un tale capo :-(.

P.S.: polinked dll con librerie runtime VC 2005: dopo indicatore e script

>> tutto si scarica normalmente.

 
jartmailru >> :

In realtà, ho avuto tutti questi problemi con la dll anche un anno fa, quando avevo EA-

Ho controllato la corsa del mio tester contro quella del sistema.

Ma... qualcuno è riuscito a mettere tutti giù qualche volta per le mani storte e gli errori nel programma.

Dio non voglia che qualcuno sia un tale capo :-(.

P.S.: ho appena poligrafato la dll con le librerie runtime di VC 2005: dopo l'indicatore e lo script

tutto si scarica bene.

Ancora una volta, non ho problemi con la dll da nessuna parte. Se avete un problema, è un vostro problema di programmazione, probabilmente non è colpa di MS o di MT. E il fatto di dover usare il "vecchio" VC - questo dovrebbe essere chiaro.

Motivazione: