Diskussion zum Artikel "Offenlegen von C#-Code in MQL5 mithilfe nicht gemanagter Exporte" - Seite 6
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
Danke, nützlicher Artikel!!! Respekt!
Wie kann man eine Zeichenkette von MT an C# übergeben, so etwas habe ich in dem Artikel nicht gefunden. Bitte erklären Sie.
Danke, nützlicher Artikel!!! Respekt!
Wie kann man eine Zeichenkette von MT an C# übergeben, so etwas habe ich in dem Artikel nicht gefunden. Bitte erklären Sie.
Der neue Artikel Exposing C# code to MQL5 using unmanaged exports wurde veröffentlicht:
Autor: investeo
Hallo investeo, toller Artikel!
Ich habe diesen Artikel auf der Suche gefunden, wie man C# DLL auf mql5 Code verbindet... und das half mir sehr! Danke!
Nun, ich brauche, um Daten von einer DLL, die WebSocket-Verbindung mit einem Drittanbieter-Server läuft zu erhalten, und müssen die Live-Daten, die vom Server zu MQL5 kommt zu senden, aber ich finde kein Beispiel für die Umsetzung der Echtzeit und 2-Wege-Kommunikation zwischen MQL5 und eine DLL oder API.
Können Sie mir helfen?
Fehler 2 C:\Users\Administrator\AppData\Local\Temp\tmp8B24\dllTest.il(58) : error : syntax error at token '{ ' in: { dllTest
Dieser Fehler tritt auf chinesischen Systemen auf, weil UnmanageExports nicht richtig funktioniert, weil einige Kommentare auf Chinesisch generiert werden, wenn UnmanageExports die IL-Datei generiert. Dieses Problem tritt auf japanischen und englischen Betriebssystemen nicht auf, es gibt eine Lösung, Sie können Ihr Betriebssystem auf ein englisches umstellen.
Aber das wäre zu viel Aufwand, richtig, hier müssen Sie das kleine Fuchsding herausnehmen, um es zu beheben!
Laden Sie das von Little Fox zur Verfügung gestellte Fix für Unmanaged Exports unter folgender Adresse herunter
https://www.noisyfox.cn/397.html.
http://www.magecorn.com/p/280.shtml .
Für weitere Details, lesen Sie bitte die beiden oben genannten Artikel
Der Besitzer des obigen Codes konnte ihn nicht ausführen?
2017.04.28 23:48:08.774 Cannot find 'Add' in 'Testme.dll'
Schalten Sie im Editor-Navigator "Alle Dateitypen anzeigen" ein, nehmen Sie Ihre DLL mit der Maus und werfen Sie sie in das MQL5-Fenster des Programms.
Das Ergebnis wird Sie wahrscheinlich überraschen.
Guten Tag! Hier ist 2018....
Können Sie mir sagen, wo ich Beispiele für den Aufruf von in Net geschriebenen exportierten Funktionen sehen kann?
Man kann C++ Stripper mit Hilfe von IJW verwenden, und dann alles in eine einzige DLL rein mittels Compiler - Linker zusammenführen, Perversionen mit der im Artikel beschriebenen Schablone sind nicht nötig, hier kurz beschrieben - http://stackoverflow.com/questions/26226958/include-managed-c-sharp-dll-into-unmanaged-c-dll-all-in-one-single-file.
Tja, und die beschriebene Methode mit dem Template RGiesecke - das ist ein Hack und so etwas funktioniert früher oder später nicht mehr, hat bei mir übrigens auch nicht funktioniert ...Aber, falls jemand noch mit der im Artikel beschriebenen IL-Methode spielen will, gibt es noch ein anderes Fahrrad, das allerdings auch nicht funktioniert - https://github.com/winch/winch.pinkbile.com-c-sharp/tree/master/dll_tool/dll_tool.
Guten Tag! Könnten Sie ein Schritt-für-Schritt-Testbeispiel für die Erstellung von c++/c++CLI/c# in einer Datei schreiben? Gleiche einfache Beispiele wie der Autor des Artikels.
Bitte geben Sie ein einfaches Beispiel für eine Funktion, die in C# geschrieben wurde, um sie von mt4 (oder mt5) aus aufzurufen ........... Übergabe der Werte a und b an eine Funktion mit Sharp und Rückgabe des Ergebnisses an mt4(mt5)
im Artikel https://www.mql5.com/de/articles/249 kompilierte dll des Autors funktioniert in mt4 und mt5 korrekt!
aber wenn ich versuche, meine eigene kompilierte dll aus den Quellen des Autors zu erstellen (in VisualStudio 2010), funktioniert diese dll nicht (schreibt Fehler 127)
alle .NET Versionen sind installiert.
// код C#
using System;
using System.Text;
using RGiesecke.DllExport;
using System.Runtime.InteropServices;
namespace TEST
{
class TEST
{
[DllExport("Add", CallingConvention = CallingConvention.StdCall)]
public static int Add(int left, int right)
{
return left + right;
}
}
}
namespace RGiesecke.DllExport
{
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
partial class DllExportAttribute : Attribute
{
public DllExportAttribute()
{
}
public DllExportAttribute(string exportName)
: this(exportName, CallingConvention.StdCall)
{
}
public DllExportAttribute(string exportName, CallingConvention callingConvention)
{
ExportName = exportName;
CallingConvention = callingConvention;
}
public CallingConvention CallingConvention { get; set; }
public string ExportName { get; set; }
}
}
// код МТ4
//+------------------------------------------------------------------+
#import "TEST.dll"
int Add(int a,int b);
#import
void start()
{
Comment(Add(3,2));
}
//+------------------------------------------------------------------+
Ich habe drei Tage und drei Nächte damit verbracht, zu googeln und zu experimentieren, im Allgemeinen funktioniert das Beispiel in VS2017, ich konnte die .dll unter MT4 kompilieren und ausführen, aber ..... unter Win10 auf Russisch konnte ich es nicht ausführen.
Ich habe folgendes getan: eine virtuelle Maschine mit Win7 - 64 installiert, aber in Englisch, die englische Version von VS2017 installiert, nur das Paket für C# installiert, kopiert die Vorlage von RGiesecke in den Ordner mit Vorlagen VS2017. Beim Kompilieren des Projekts, vergessen Sie nicht, die Plattform zu überprüfen - unbedingt x86 (für MT4) . Während der ersten Kompilierung bekam ich einen Fehler kein Namespace RGiesecke, ich installierte das Paket UnmanagedExportsaus dem Projekt. Alles kompiliert mit 1 Fehler - ildasm.exe nicht gefunden, aber .dll funktioniert unter MT4 ohne Probleme.
Das Problem liegt wahrscheinlich in der Vorlage von RGiesecke, es funktioniert korrekt in der englischen Version von Win, in der englischen Version von VS2017 und alle Pfade in VS2017 sollten standardmäßig gesetzt sein.
hier ist, wie es funktioniert ;)
Funktioniert dieser Ansatz für .NET Version 5?
Ich habe es nicht getestet, aber ich bezweifle, dass es funktionieren wird.
MT4 ist sehr schwierig, mit C# zu interagieren - es gibt immer einige Fallstricke.
Es ist einfacher, zu MT5 zu wechseln.
aber wenn Sie MT4 im Prinzip verwenden möchten, dann als eine Option - starten .dll in C# nach der Methodik aus dem Artikel, und in ihm starten Sie alle C#-Code in einem separaten Thread und organisieren den Austausch, ich habe 64-Bit-C#-Bibliotheken auf diese Weise gestartet