Einzelnen Beitrag anzeigen
  #21 (permalink)  
Alt 04.02.12
Programmierer Programmierer ist offline
Mitglied
 
Registriert seit: Dec 2009
Beiträge: 96
Programmierer befindet sich auf einem aufstrebenden Ast
Standard

letztens wurde ich per PN gefragt, was es denn dann bringt, DLLs einzubinden und was da der Unterschied zu include ist. Damit alles etwas davon haben, poste ich die Erklärung gleich hier:

Erstmal werden DLLs garnicht in MQL4 programmiert. Das dürfte schon mal der größte Unterschied sein. Man kann sie in C oder auch C# oder anderen kompatiblen Sprachen programmieren. Das birgt natürlich auch einen großen Vorteil - bestimmte Einsatzszenarios erfordern schnellere oder flexiblere Programmiersprachen als MQL4. Dafür kann man dann eine DLL einsetzen. EAs/scripts/Indikatoren können Sie als externe Module einbinden. Der große Unterschied zu include ist dabei, dass sie tatsächlich extern bleiben, d.h. beim Kompilieren werden sie nicht mit einkompiliert, sondern bleiben als separate DLL-bestehen. Man muss sie also immer "mitschleppen". Auch programmiertechnisch entstehen dadurch große Unterschiede.

Oft werden DLLs für EA-Kopierschutz genutzt. MQL4 ist dekompilierbar, der DLL-Code nicht! D.h. wenn der Code geheim bleiben muss, weil bspw. ein Ablaufdatum mit drin ist, kann man Teile des Codes in die DLL auslagern und ist auf der sicheren Seite.