Soweit ich weiß, verwendet die RGiesecke UnmanagedExportLibrary-Vorlage an einigen Stellen Kommentare wie // Code zum Parsen von IL-Dateien. Russischsprachige Windows-Benutzer fügen dort russische Kommentare wie // Size ein, und deshalb funktioniert seine Vorlage nicht. Es gibt einfach keine Funktionen in der DLL und das ist der Grund, warum der Fehler 127 ausgelöst wird. Schade, nur dieser Vorlage zuliebe möchte ich die Windows-Oberflächensprache nicht ändern, obwohl sie ganz gut funktioniert und korrekt zu sein scheint, zumindest werden die DLLs entladen. Microsoft ist auch ein Besen, man kann problemlos Daten von C++ nach C# übertragen, aber andersherum ist es ein großes Problem.
A set of compile-time libraries (nothing to deploy) and a build task that enable you to export functions from managed code to native applications. That means, you can create plugins in a managed language like C# or F# for native applications that only have a C-Api (like Notepad++). The nuget package is all you need. Just mark your methods with [DllExport] and build for x86, x64 or ia64. Hints: - You have to set your platform target to either x86, ia64 or x64. AnyCPU assemblies cannot export functions. - The export name defaults to the method name and the calling convention to stdcall. If that's all what you want, you can just use [DllExport] without parameters. - You cannot put your exports in generic types or export generic methods. (The CLR wouldn't know what type parameters to use)
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 ...
In comparison to the question above i need to combine DLLs so that final mixed DLL could export their functions to other unmanaged applications. For this i would like to compile them both as .netmodule and then combine them into one file with a linker so i have : 1) Libs - project with some library in C# - it does not have any dependencies...
I also provided several examples on how to marshal MQL5 structures against C# and how to invoke exported DLL functions in MQL5 scripts. - Page 2 - Category: articles, library comments
Ja, in einiger Zeit werden wir einen neuen Artikel über die Verwendung von DLLs schreiben. Dort sind viele interessante Dinge hinzugefügt worden.
In der Zwischenzeit können Sie die Beispiele aus dem besprochenen Artikel verwenden. Dort gibt es nichts Kompliziertes.
Und ... Wie lange noch warten? Ein Jahr, zwei ... oder 10?
Es sind schon 3 Jahre vergangen. Laut dem eingangs erwähnten Artikel ist es nicht möglich, Methoden aus einer DLLzu importieren. Wo sind die Beispiele?
Vielen Dank für diesen Artikel. Ich habe die Ideen hier verwendet, um diese Open-Source-MQL-Bibliothek für C# zu bauen.
https://github.com/jseparovic/MQL4CSharp
Sie befindet sich noch in der Entwicklung und ist derzeit ungetestet, aber erste Tests zeigen, dass die Idee funktioniert.
Es ist sehr einfach in der Art und Weise, wie es Befehle von C# sendet, mit einem Thread für den C#-Code zu laufen, und Getter / Setter für die Kommunikation. MQL fragt jede Millisekunde nach wartenden Befehlen ab, während der C#-Code blockieren kann, bis das Ergebnis geschrieben ist.
Schauen Sie sich https://github.com/jseparovic/MQL4CSharp/blob/master/MQL4CSharp/UserDefined/Strategy/MaCrossStrategy.cs an, um ein Beispiel für die Implementierung einer Strategie in C# zu sehen.
Ich bin auf einem 64 Win 8.
Ich kompilierte es mit vs2013.
Es wird jedoch geladen, aber es gibt einen nicht aufgelösten Importfunktionsaufruf.
Wie kann ich dies lösen?
2014.03.05 20:39:59.220 UnmanagedExportsDLLExample1 (XAUUSD,H1) ungelöster Importfunktionsaufruf
2014.03.05 20:39:59.220 UnmanagedExportsDLLExample1 (XAUUSD,H1) Cannot find 'Add' in 'Testme.dll'
2011.10.29 20:13:37 2000.01.03 00:00 Expert_NN_1_1 USDJPY,H1: cannot call function 'sum' from dll 'NN 1 DLL.dll' (error 127)
Hallo,
Ich erhalte ähnliche Fehler. Wie hast du das gelöst?...
2014.03.28 22:16:41.199 2014.03.25 23:59 Unaufgelöster Importfunktionsaufruf
2014.03.28 22:16:41.199 2014.03.25 23:59 Kann 'Set2DArray' in 'Testme.dll' nicht finden
Soweit ich die RGiesecke UnmanagedExportLibrary-Vorlage verstehe...
Diese Nachricht wurde vor über einem halben Jahr hinterlassen. Hat sich seither etwas geändert????
Methode eins:
Ich habe 64 Win 7, vs2012 C#. Heruntergeladen der Eigentümer testme.zip Vorlage Datei.
In der Mitte der Eingabeaufforderung ein paar Fehler (falscher Pfad, fehlende Dateien, etc. und so weiter und so fort), wurde gelöst.
Aber am Ende, immer noch erscheinen und und oben das gleiche Problem. Ich weiß nicht, ob es jetzt gelöst ist? Welche Methode zu lösen.
Methode zwei:
NuGet installiert RGiesecke Paket.
https://www.nuget.org/packages/UnmanagedExports/1.2.6
Die neueste Version von 201311 meldet
Fehler 2 C:\Users\Administrator\AppData\Local\Temp\tmp8B24\dllTest.il(58) : error : syntax error at token '{ ' in: {
dllTest
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 wenn jemand noch mit der im Artikel beschriebenen IL-Methode spielen will, gibt es noch ein Fahrrad, aber das funktioniert auch nicht - https://github.com/winch/winch.pinkbile.com-c-sharp/tree/master/dll_tool/dll_tool.
Hallo,
War jemand in der Lage, eine Struktur mit String-Variablen im Inneren, an die DLL zu senden?
Ich war in der Lage, int, double, float zu senden, aber für String-Variablen bekomme ich diesen Fehler:
Access violation read to 0x0000007BHier ist meine C#-Struktur:
Und hier ist die mql4-Struktur:
Ich habe versucht, die String-Variable innerhalb der Struktur zu marshal, aber MT4 stürzt totalaly, kein Fehler nur hängt und zerquetscht in Windows.
Ich danke Ihnen.
Ja, in einiger Zeit werden wir einen neuen Artikel über die Verwendung von DLLs schreiben. Dort sind viele interessante Dinge hinzugefügt worden.
In der Zwischenzeit können Sie die Beispiele aus dem besprochenen Artikel verwenden. Dort gibt es nichts Kompliziertes.
Und ... Wie lange noch warten? Ein Jahr, zwei ... oder 10?
Es sind schon 3 Jahre vergangen. Laut dem eingangs erwähnten Artikel ist es nicht möglich, Methoden aus einer DLL zu importieren. Wo sind die Beispiele?
Vielen Dank für diesen Artikel. Ich habe die Ideen hier verwendet, um diese Open-Source-MQL-Bibliothek für C# zu bauen.
https://github.com/jseparovic/MQL4CSharp
Sie befindet sich noch in der Entwicklung und ist derzeit ungetestet, aber erste Tests zeigen, dass die Idee funktioniert.
Es ist sehr einfach in der Art und Weise, wie es Befehle von C# sendet, mit einem Thread für den C#-Code zu laufen, und Getter / Setter für die Kommunikation. MQL fragt jede Millisekunde nach wartenden Befehlen ab, während der C#-Code blockieren kann, bis das Ergebnis geschrieben ist.
Schauen Sie sich https://github.com/jseparovic/MQL4CSharp/blob/master/MQL4CSharp/UserDefined/Strategy/MaCrossStrategy.cs an, um ein Beispiel für die Implementierung einer Strategie in C# zu sehen.
Zum Wohl,
Jason