Diskussion zum Artikel "Offenlegen von C#-Code in MQL5 mithilfe nicht gemanagter Exporte" - Seite 2
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 hoffe, dass RGiesecke bald antworten wird, Sie können es unter folgender Adresse verfolgen
http://stackoverflow.com/questions/4642548/how-to-use-a-net-assembly-in-delphi-without-registering-it-in-the-gac-or-com/5497058#5497058
*Vielen Dank für diesen Artikel, er ist sehr gut geschrieben und die vielen Beispiele sind sehr hilfreich.
Die große Hürde für mich war herauszufinden, die Variable Typen und wie man sie hin und her übergeben. (insbesondere Arrays und Strings) Es wäre großartig, einige gemeinsame C#-Bibliotheken für Metatrader zu sehen. Sobald ich mehr gelernt und einige nützliche Bibliotheken erstellt habe, werde ich sehen, ob ich sie beitragen kann.
Sie haben mir viel Zeit erspart, anstatt durch Versuch und Irrtum zu lernen. Danke, dass Sie Ihr Wissen teilen.
Ich weiß das sehr zu schätzen :-)
Hallo
Ich habe ein Problem, dass plötzlich (?) meine DLL-Funktion gibt Fehlermeldung "Cannot find 'Add' in 'TestMe.dll'. Dies ist ein einfaches Beispiel, das Ihren Code verwendet:
using System;
using System.Text;
using RGiesecke.DllExport;
using System.Runtime.InteropServices;
namespace Testme
{
class Test
{
[DllExport("Add", CallingConvention = CallingConvention.StdCall)]
public static int Add(int left, int right)
{
return left + right;
}
}
}
Verwendung in einer .mql-Datei:
#import "Testme.dll"
int Add(int left,int right);
#import
void OnStart()
{
//---
for(int i=0; i<3; i++)
{
Print(Add(i,666));
}
}
--> Kann 'Add' in 'Testme.dll' nicht finden
Gibt es eine Änderung beim Aufruf von DLLs, die ich übersehen habe?
Für jede Meinung bin ich sehr dankbar.
Thomas
Hallo
Ich habe auch ein Problem plötzlich (es funktionierte auf den ersten, aber ...), wenn ich das Beispiel dll kompiliert, bekam ich
Assemblieren von 'C:\Benutzer\intern228\AppData\Local\Temp\tmpAFBE\UELTest.x86.il' zu DLL --> 'C:\Benutzer\intern228\Dokumente\Visual Studio 2010\Projects\UnmanagedLibTest\UELTest\bin\Debug\x86\UELTest.dll'
Die Quelldatei ist UNICODE
***** FAILURE *****
UELTest
Habe ich irgendetwas übersehen?
Windows 7; VisualStudio 2010;
Jede Meinung wird sehr geschätzt.
Risan
**UPDATE** Ich habe das Problem gelöst, danke!
Hallo zusammen,
Ich habe das Verfahren vollständig befolgt, um eine dll in C# Express 2010 zu schreiben. Die Vorlage funktionierte nicht, also fügte ich die dll-Dateien manuell in ein neues Projekt ein und alles wurde gut kompiliert (vielleicht habe ich hier etwas falsch gemacht).
Ich habe zwei einfache Funktionen geschrieben, nur um zu testen, ob es funktioniert, und ich teste aus Metatrader 4. Ich bekomme den folgenden Fehler:
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)
Die DLL ist in MT4 geladen, ich habe es überprüft, aber sie will die Funktion nicht aufrufen. Mir ist aufgefallen, dass dieses Problem auftritt, wenn ich versuche, eine verwaltete DLL in MT4 aufzurufen, aber das in diesem Artikel beschriebene Verfahren sollte das Problem doch lösen, oder?
Für jede Hilfe bin ich dankbar
Vielen Dank!
Hallo zusammen,
Ich möchte nur meine Anerkennung für einen so gut geschriebenen Artikel weitergeben.
Die Angaben zur Website von Robert Giesecke waren von unschätzbarem Wert.
Ich habe viel gelernt. Dass ich nicht noch einen C++-Wrapper schreiben muss, wenn ich VB.NET bevorzuge, ist eine tolle Sache.
Vielen Dank dafür.
Zum Wohl,
Gordon
Hallo!
Ich habe das gleiche Problem.... Methoden, die ich dekorieren sind nicht in mt5 gefunden!!
pls Hilfe! (ich bin mit vs2010 und die Vorlage)
Veröffentlichter Artikel Wie man die Welt von C# aus MQL5 durch den Export von nicht verwaltetem Code öffnet:
Autor: investeo
in dem Artikel https://www.mql5.com/de/articles/249 kompilierte dll des Autors funktioniert in mt4 und mt5 richtig!
aber wenn ich versuche, meine eigene kompilierte dll aus der Quelle des Autors (in VisualStudio 2010) zu erstellen, diese dll funktioniert nicht (schreibt Fehler 127)
alle Versionen von .NET 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));
}
//+------------------------------------------------------------------+
und wie man Vorlagen einbindet?
wer weiß, wo und wie Vorlagen in c-sharp eingefügt werden, der Grund ist offenbar nur diese
und wie die Vorlage zu engagieren?
http://softblog.violet-tape.ru/2010/05/06/visual-studio-templates/
ganz unten für VS2010.
und nützliche Informationen ganz am Ende.