Diskussion zum Artikel "Den Ballast selbstgemachter "dynamischer Programmbibliotheken" loswerden" - Seite 3
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
Ich frage mich, ob es möglich ist, einen echten Zeiger auf eine Funktion zu erhalten. Zeiger erhalten mit typedef funktionieren perfekt gut innerhalb mql-Programm. Aber leider ist es mir nicht gelungen, sie in dll zu übergeben.
Wenn Sie C++ und den eingebauten Assembler beherrschen und wissen, was und wie man in den Stack einfügt, und die Begriffe far und near call klar sind, können Sie es versuchen. Ich kann nicht garantieren, dass es funktionieren wird, aber es ist möglich.
Wo liegt der Fehler?
Ihr Beispiel im Code ist ganz anders. Ich versuche, den Wert von der Adresse zu erhalten.
Es gibt ein Beispiel in dem Artikel.
Ihr Beispiel im Code ist ganz anders. Ich versuche, den Wert von der Adresse zu erhalten.
Es gibt ein Beispiel in dem Artikel.
Ich habe die Stellen hervorgehoben, an denen mit Adresse geschrieben wird. Aber auch dieses Beispiel aus dem Artikel verursacht einen Absturz.Ich habe sofort verstanden, was Sie wollten. Ich bin sicher, dass die von WinAPI-Funktionen zurückgegebene Adresse in MQL5 nicht verwendet werden kann. Aber die Adresse wird korrekt an die Argumente übergeben.
Sie können absolut sicher sein, indem Sie eine einfache DLL schreiben, die die im Argument empfangene Adresse anzeigt und zurückgibt. Und vergleichen Sie das Ergebnis in MQL5. Viele Leute hier praktizieren C.
Wo liegt der Fehler?
Ich habe deinen korrigiert:
Sie sollten überall eine Länge von 4 oder weniger haben
Kopieren von mehr als 2GB funktioniert
Ermitteln der Startadresse eines Arrays:
Ihr Beispiel im Code ist ganz anders. Ich versuche, den Wert von der Adresse zu erhalten.
Es gibt ein Beispiel in dem Artikel.
Ich habe die Stellen hervorgehoben, an denen mit Adresse geschrieben wird. Aber auch dieses Beispiel aus dem Artikel verursacht einen Absturz.Natürlich tut es das... die Prototypen sind von 4 (32-Bit-Adresse a la unsigned int), und Sie kompilieren/führen sie in 5 (es hat 64).
Sie können niemandem trauen, wenn Sie WinAPI verwenden, schreiben Sie Prototypen selbst. Oder besser, schreiben Sie Ihre eigene DLL, lassen Sie es winapi ziehen, und oben in mql gibt Schnittstellen der höheren Ebene
Kopieren von mehr als 2 GB funktioniert
Ermitteln der Anfangsadresse des Arrays:
Ich habe den Punkt mit der 64bit-Adresse übersehen. Aber ich stürze trotzdem mit der korrigierten Adresse ab. Ist es sicher, dass es funktionieren sollte? Kann ich ein vollständiges Beispiel für den korrigierten fxsaber-Code sehen?
Bis jetzt bin ich immer noch der Meinung, dass die Adresse von WinAPI nicht mit MQL kompatibel ist.
Sie haben Ihre korrigiert:
natürlich tut es das...Prototypen sind von 4 (32 Bit Adresse a la unsigned int) und kompilieren/laufen in 5 (es hat 64).
Danke, jetzt funktioniert es.
Der letzte Parameter (cnt) ist ebenfalls 64 Bit groß. Es ist size_t
https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/memcpy-wmemcpy