Diskussion über "Wie man eine DLL für MQL5 schreibt und Daten in 10 Minuten austauscht". - Seite 10
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Das ist ja das Problem, das Skript bricht einfach ab, wie kann ich den Fehlercode danach sehen? Oder kann sie bei der nächsten Ausführung sofort gelesen werden?
Im Prinzip wurde das Problem durch Kompilieren der DLL für 64x gelöst. Obwohl, danach bekam ich mehr Fehler, aber es ist nicht wichtig. Ich brauchte nur zu verstehen, wie zu bauen und Link-Bibliotheken für c/s++ zu mql5 im Allgemeinen. Mein Beispiel funktioniert jetzt einwandfrei.
Wenn Sie Studio 2017 haben und diese Anleitung für Ihr altes Studio ansehen und nicht wissen, was Sie tun sollen oder wie Sie es tun sollen, empfehle ich Ihnen, zuerst diesen Artikel zu lesen: https://docs.microsoft.com/ru-ru/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=vs-2017
Dann, wenn Sie Ihre DLL nach dem Beispiel aus diesem Artikel erstellt und auf einer Client-Anwendung getestet haben, lesen Sie diese Anweisung, beginnend mit Punkt 2, "In MQL5-Programm sollte es wie folgt beschrieben und aufgerufen werden:". Mit anderen Worten: Deklarieren Sie Ihre DLL in mt5 so, wie sie dort beschrieben ist.
Ich habe mein Problem auf diese Weise gelöst.
Ich hätte gerne eine Liste von Typkorrelationen zwischen C++ und MQL in Form von Makros.
#define MQL_STRING wchar_t
Hier ist mein Code in Visual Studio 2012 C++. Datei main. mit cpp-Erweiterung (main.cpp)
Dann habe ich eine Datei mit der Haupterweiterung def (main.def) erstellt, die eine Listeder exportierten Funktionenenthält, der Code sieht wie folgt aus:
LIBRARY "dllmt42" EXPORTS add
Dann habe ich es in den Compiler importiert
Keine Probleme nach der Kompilierung, aber wenn Sie den EA auf dem Diagramm zu verlassen, bekomme ich verwirrt
Unaufgelöster Importfunktionsaufruf, Suche nach '_add' in 'dllmt42.dll'. Total Comander sieht beim Ziehen der Datei sowohl die Funktion als auch den Compiler selbst
Wer kann helfen, wie das Problem mit dem Fehler zu lösen ist, immerhin gibt es eine Datei mit der Endung .def, die den korrekten Export von Funktionen speichert und dafür zuständig ist?
Hier ist mein Code in C++ Visual Studio 2012. Die Datei main. mit der Erweiterung cpp (main.cpp)
Dann habe ich eine Datei mit der Haupterweiterung def (main.def) erstellt, die eine Listeder exportierten Funktionenenthält, der Code sieht wie folgt aus:
Dann habe ich es in den Compiler importiert
Keine Probleme nach der Kompilierung, aber wenn Sie den EA auf dem Diagramm zu verlassen, bekomme ich verwirrt
Unaufgelöster Importfunktionsaufruf, Suche nach '_add' in 'dllmt42.dll'. Total Comander sieht beim Ziehen der Datei sowohl die Funktion als auch den Compiler selbst
Wer kann helfen, wie das Problem mit dem Fehler zu lösen ist, schließlich gibt es eine Datei mit der Endung .def, die Funktionen speichert und für den korrekten Export zuständig ist?
extern "C" sollte sowohl zu den Deklarationen als auch zu den Implementierungen der exportierten Funktionen hinzugefügt werden, da dies C++ ist. Andernfalls sind die Eingabesignaturen "plus" und MT (sowie alle anderen) sehen sie nicht.
extern "C" muss sowohl in den Deklarationen als auch in den Implementierungen der exportierten Funktionen hinzugefügt werden, da es sich um C++ handelt. Andernfalls sind die Eingabesignaturen "plus" und MT (wie alle anderen) kann sie nicht sehen.
Ich habe sie auf diese Weise hinzugefügt
Aber immer noch das Gleiche -nicht aufgelöster Importfunktionsaufruf, Suche nach '_add' in 'dllmt42.dll'... D.h. ich brauche reines C ohne ++?
Die .def-Datei ist überhaupt nicht erforderlich. Sie müssen die Funktionen im Abschnitt #import in MQL duplizieren
Nun, ja, und ohne dass ich es gesehen habe und so, ich gehe nicht, na ja, zeigen Sie mir, was es bereits dupliziert ist den Weg zeigen?