Diskussion über "Wie man eine DLL für MQL5 schreibt und Daten in 10 Minuten austauscht". - Seite 9

 
Renat:

Sie sollten Ihr technisches Niveau verbessern.

Für 64-Bit-Programme benötigen Sie 64-Bit-Bibliotheken, und es gibt keine Möglichkeit, 32-Bit-Bibliotheken vernünftig zu verbinden. Um die 32-Bit-Version zu installieren, muss das Installationsprogramm mit dem Schalter /32 ausgeführt werden

Ich werde den Artikel neu schreiben und coole Funktionen hinzufügen, die in MetaEditor und den Plattformen MT4 und MT5 längst implementiert sind. Viele Entwickler sind sich der neuen Funktionen nicht bewusst.

Danke Renat für deine Antwort. Heutzutage sind die Märkte ziemlich kompliziert, und der Handel überfordert einen fast und man hat kaum Zeit, sich im technischen Bereich zu verbessern. Ich verstehe den Unterschied zwischen 32-Bit- und 64-Bit-Programmen wirklich nicht. Ich kann nur feststellen, dass sie den Nutzern einige unnötige Probleme bereitet. Jeder fährt irgendwohin und Microsoft eingeschlossen, sie wollen schneller und abrupter vorankommen, aber die Nutzer stehen vor einer Menge Probleme. Ich kann keinen Geschwindigkeitsunterschied zwischen 64-Bit und 32-Bit feststellen. Allerdings ist mein Prozessor i7-4 - der neueste Intel, vielleicht deswegen. Ich sehe auch, dass Microsoft C++ komprimiert. Im letzten Compiler wurde sogar die Möglichkeit, mit C++-Formularen zu arbeiten, entfernt. Und als ich fragte, warum? Die Antwort lautet: Warum probieren Sie nicht das neue und perfektere C++ aus? Wenn Sie also in die Zukunft blicken, sollten Sie auch dies berücksichtigen.
 
ANG3110:


Und ich sehe, dass Microsoft mit der Komprimierung von C++ begonnen hat. Im neuesten Compiler wurde sogar die Möglichkeit, mit Formularen in C++ zu arbeiten, entfernt. Und als ich fragte, warum? Die Antwort lautet: Warum probieren Sie nicht das neue und verbesserte C++ aus? Wenn Sie also in die Zukunft blicken, sollten Sie auch dies berücksichtigen.

Nun, Microsoft ist ein notorischer Technologiekiller und hat sich in letzter Zeit ein Grab nach dem anderen geschaufelt.

Warum sich einmischen - lass es in sein eigenes Loch fallen. Es ist also bildlich gesprochen, keine Zeit auf technische Details zu verschwenden. Wer will schon Details - es gibt Tausende davon im Internet. Für "besseres C#" fehlen mir die Worte.

 
:)
 
Kollegen, wie verbinde ich MT-Bibliotheken in VS? damit mein Studio nicht String, Datetime... unterstreicht.
 
Renat Fatkhullin:

Sie sollten Ihr technisches Niveau verbessern.

Für 64-Bit-Programme benötigen Sie 64-Bit-Bibliotheken, und es gibt keine Möglichkeit, 32-Bit-Bibliotheken auf vernünftige Weise zu verbinden. Um die 32-Bit-Version zu installieren, müssen Sie das Installationsprogramm mit dem Schalter /32 ausführen.

Ich werde den Artikel neu schreiben und coole Funktionen hinzufügen, die schon lange in MetaEditor und den Plattformen MT4 und MT5 implementiert sind. Viele Entwickler sind sich der neuen Funktionen nicht bewusst.

Gibt es ein Beispiel für die Erstellung einer 64-Bit-DLL für die 64-Bit-Version des Terminals? Und über "cooles Zeug" ist es interessant zu wissen)
 

Es war ganz einfach!

Installiert die kostenlose Visual Studio Community 2015 (genau Community, da es x64-Unterstützung hat, im Gegensatz zu Express) Die kostenpflichtigen Versionen haben auch x64 natürlich, aber ich war auf der Suche nach den kostenlosen Optionen. Web Installer gab eine Fehlermeldung aus, also habe ich vom ISO-Image installiert. Wählen Sie bei der Installation die Option "Benutzerdefinierte Installation" und aktivieren Sie C++ (standardmäßig ist es nicht installiert).

Dann habe ich alles wie im Artikel beschrieben gemacht, d.h. ein Win32-Projekt erstellt. Ich habe eine Baugruppe erstellt, die das x64-Terminal (wie erwartet) nicht akzeptiert.

Dann habe ich in der Registerkarte "Build" -> "Configuration Manager" die Plattform auf x64 geändert (Sie können auch die "Active Solution Platform" auf x64 ändern)


Wieder gebaut. Es stellte sich heraus, dass sich die neue DLL im Ordner \x64\Debug befindet (die endgültige Version wird im Ordner x64\Release\ sein), den das x64-Terminal ohne Probleme verarbeitete und die folgende Ausgabe lieferte:

19:29:01.883 dll_test (EURUSD.e,H1) Zeit 16 msec, int: -752584127 double: 17247836076609.0
19:29:01.883 dll_test (EURUSD.e,H1) Array: 0 1 2 3 4 5 6 7 8 9
19:29:01.883 dll_test (EURUSD.e,H1) Replace: Eine schnelle braune Katze springt über den faulen Hund
19:29:01.886 dll_test (EURUSD.e,H1) Zugriffsverletzung bei 0x000007FEFB0F176F write to 0x0000000000000000 in '...\MQL5\Libraries\ConsoleApplication1.dll'
und weitere Beschreibung des abgefangenen Fehlers
D.h., alles funktioniert!!!

Downloads | Visual Studio
Downloads | Visual Studio
  • www.visualstudio.com
Visual Studio Community 2015 with Update 1 - Free Visual Studio Community 2015 with Update 1 is a free, fully featured, and extensible IDE for individual developers, open source projects, academic research, education, and small professional teams. Create applications for Windows, Android, and iOS as well as web applications and cloud services...
 

Anmerkung:

Als ich die DLL auf einen anderen Computer übertrug, funktionierte sie nicht, weil sie Komponenten aus VS selbst verwendete. Das Problem wird in Projekt -> Eigenschaften -> MFC verwenden gelöst, indem man "MFC in statischer Bibliothek verwenden" einstellt. Danach erstellen Sie die DLL neu und kompilieren sie neu

Gefunden im Forum:

Es ist möglich, EAs mit DLLs nicht nur auf dem lokalen Computer, sondern auch in einem lokalen Netzwerk zu optimieren. Fügen Sie dazu auf Netzwerkcomputern den Schlüssel /dlls in die Registrierung für Testagenten ein. Registry-Editor aufrufen: regedit

Renat Fatkhullin:

Bei bereits installierten Agenten können die Startbefehle nur über die Registrierung in den Zweigen HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MetaTester-XXXX geändert werden

Klicken Sie einfach auf jeden ImagePath-Parameter und fügen Sie /dlls am Ende der Zeile hinzu


 

Ich bin gerade dabei, ZeroMQ über eine DLL an MT4 zu binden.

Irgendwie ist das sehr schlecht. Das Terminal stürzt beim Starten des Indikators oder beim Entladen immer wieder ab. Und im Debug-Modus wird es nicht angezeigt, also weiß ich nicht, was da los ist.

 

Guten Tag.

Wenn ich das Testbeispiel ausführe, stürzt das Skript aus irgendeinem Grund beim ersten Aufruf der importierten Funktion ab

2016.07.30 23:30:14.088 Skriptskript mql5dll_test (EURUSD,H1) entfernt

Was mache ich falsch?

 
EsEr:

Guten Tag.

Wenn ich das Testbeispiel ausführe, stürzt das Skript aus irgendeinem Grund beim ersten Aufruf der importierten Funktion ab

2016.07.30 23:30:14.088 Skriptskript mql5dll_test (EURUSD,H1) entfernt

Was mache ich falsch?

dieser Artikel ist 6 Jahre alt, da muss sich etwas geändert haben.

Wie lautet der Fehlercode?