Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43271
Benutzer: 7.220
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 4 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 283
Gesamt: 283
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Like Tree1Likes
  • 1 Post By Racki
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 20.12.11
Mitglied
 
Registriert seit: Apr 2011
Ort: Osnabrück
Beiträge: 103
Racki befindet sich auf einem aufstrebenden Ast
Standard C#-DLL verwenden

Hallo,

hat von euch jemand Erfahrung damit, wie man in C# geschriebene DLL-Dateien in MQL4 verwendet?
Als Entwicklungsumgebung verwende ich MS VS 2010 Ultimate.
Wenn ich das MQL4-Projekt im Metaeditor kompiliere, dann geht das reibungslos (DLL wird mit eingebunden).
Verwende ich die EX4 im Terminal, dann erhalte ich den Fehler 127.
Nun habe ich schon einiges versucht, weiß aber so langsam nicht mehr weiter und bin für jede Hilfe dankbar.

Gruß
Racki

Edit:
Mir fällt noch ein, ich habe händisch eine .def hinzugefügt.
VS soll das von Haus aus können, gefunden habe ich dazu allerdings nichts hilfreiches.

Geändert von Racki (20.12.11 um 11:47 Uhr) Grund: .def Datei
  #2 (permalink)  
Alt 20.12.11
Benutzerbild von Crashbulle
Elite Mitglied
 
Registriert seit: Sep 2011
Ort: Voreifel
Beiträge: 584
Crashbulle befindet sich auf einem aufstrebenden Ast
Crashbulle eine Nachricht über MSN schicken Crashbulle eine Nachricht über Skype™ schicken
Standard

@ Racki

Im Text des mq4 - EA's muß dein .dll definiert/aufruf enthalten sein. Danach
kannst du ihn zur .ex4 kompilieren.
Deine .dll - Datei mußt du dann noch im MT4/Expert/Libraries Folder kopieren/setzen.
Hast du alles richtig auf einander abgestimmt, müßte der EA nach aufruf im MT4 laufen.

Have fun
Crashbulle
__________________
Was hoch aufsteigt, fällt tief herunter
Portfolio
Portfolio_1
  #3 (permalink)  
Alt 20.12.11
Mitglied
 
Registriert seit: Apr 2011
Ort: Osnabrück
Beiträge: 103
Racki befindet sich auf einem aufstrebenden Ast
Standard

Danke dir für deine Antwort,
ich habe folgendes gemacht:

Neue DLL geschrieben in C#

Code:
namespace CSharpDLL
{
    public static class test
    {
        public static int DLLTest() {
            return 123;
        }
    }
}
Die Datei CSharpDLL.dll habe ich in das Verzeichnis experts/libraries kopiert.
Dann die Datei CSharpDLL.def erstellt mit folgenden Inhalt:
Code:
LIBRARY CSharpDLL

EXPORTS DLLTest
Habe ich so aus dem DLLSample übernommen und geändert.

In experts/include habe ich die Datei CSharpDLL.mqh erstellt mit folgenden Inhalt:
Code:
#import "CSharpDLL.dll"

int DLLTest();
Jetzt fehlt noch ein EA um das ganze zu testen.
Neuen EA mit dem Namen DLLTester erstellt, der Kopf der Datei sieht so aus:

Code:
#property copyright ""
#property link ""
#include <CSharpDLL.mqh>

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int dlltestint = 0;
int init()
  {
//----
 dlltestint = DLLTest();
 Print("DLLTest-Rückgabe = " + dlltestint);

//----
   return(0);
  }
Kompilieren geht ohne Fehler, wie gehabt.
Führe ich das ganze im Terminal aus, dann kommt wieder der 127er Fehler.
Es kommt quasi diese Meldung: cannot call function 'DLLTest' from dll 'CSharpDLL.dll' (error 127).

Was macht der Racki nur falsch?
  #4 (permalink)  
Alt 16.03.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

hast Du den Fehler finden können und wenn ja, wie war die Lösung?

traderdoc
  #5 (permalink)  
Alt 16.03.13
Mitglied
 
Registriert seit: Apr 2011
Ort: Osnabrück
Beiträge: 103
Racki befindet sich auf einem aufstrebenden Ast
Standard

Helas, ja du musst dir einen Wrapper in C++ schreiben.
Ich bin einfach hingegangen und hab Visual Studio 6.0 ausgegraben.
Bloß nichts mit .Net, mit Dev Cpp hab ich es nicht hinbekommen was die Geschichte mit den .def-Dateien angeht.
Also ich habe mir letztendlich die Mühe gemacht und die DLL komplett in VS 6.0 geschrieben.

Wenn ich dran denke such ich nächste Woche nach nem Beispiel in meinem alten Projektordner.
traderdoc likes this.
  #6 (permalink)  
Alt 17.03.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Sorry, was ist ein Wrapper?
Ich habe sogar die Beispieldatei im MT genommen und mittels Visual C++ 2010 Express eine dll erstellt. Rufe ich aus dem EA die Funktion GetIntValue auf, bekommen ich denselben Fehler!
Also irgendwas haut hier überhaupt nicht hin.
Ich bin langsam am Ende meines Lateins
  #7 (permalink)  
Alt 19.03.13
Mitglied
 
Registriert seit: Apr 2011
Ort: Osnabrück
Beiträge: 103
Racki befindet sich auf einem aufstrebenden Ast
Standard

Der Wrapper ist die Schnittstelle zwischen deinem MT4 und der C#-DLL.
Bedeutet, der Wrapper (die C++-DLL) nimmt die Anfragen aus MT4 entgegen, gibt diese weiter an die C#-DLL und gibt entsprechend die Antwort der C#-DLL wieder zurück an MT4.

Ich habe grad mal in VS2010 eine solche DLL erstellt, die sich in MT4 verwenden lässt.
Quasi ein neues VC++-Projekt als MFC-DLL angelegt und somit war auch die .def-Datei vorhanden.
Thema geschlossen

Lesezeichen

Stichworte
c dll, c# dll, dll, dll einbinden, dll mql4, dll verwenden, ea dll, expert-advisor dll, mql4, programmierung

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------