Discussion de l'article "Exposer le code C# à MQL5 à l'aide d'exportations non gérées" - page 6
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Merci, article utile !!! Respect !
Comment passer une chaîne de caractères à C# à partir de MT, je n'ai pas trouvé une telle chose dans l'article. Merci de m'expliquer.
Merci, article utile !!! Respect !
Comment passer une chaîne de caractères à C# à partir de MT, je n'ai pas trouvé une telle chose dans l'article. Merci de m'expliquer.
Un nouvel article Exposer du code C# à MQL5 en utilisant des exportations non gérées a été publié :
Auteur : investeo
Bonjour investeo, excellent article !
J'ai trouvé cet article en cherchant comment connecter une DLL C# sur du code MQL5... et cela m'a beaucoup aidé ! Je vous remercie.
Maintenant, j'ai besoin d'obtenir des données d'une DLL qui exécute une connexion WebSocket avec un serveur tiers, et j'ai besoin d'envoyer les données en direct qui viennent du serveur à MQL5, mais je n'ai pas trouvé d'exemple d'implémentation de communication en temps réel et dans les deux sens entre MQL5 et une DLL ou une API.
Pouvez-vous m'aider ?
Erreur 2 C:\Users\Administrator\AppData\Local\Temp\tmp8B24\dllTest.il(58) : error : syntax error at token '{ ' dans : { dllTest
Cette erreur se produit sur les systèmes chinois car UnmanageExports ne fonctionne pas correctement parce que certains commentaires sont générés en chinois lorsque UnmanageExports génère le fichier IL. Ce problème ne se produit pas sur les systèmes d'exploitation japonais et anglais, il y a une solution, vous pouvez changer votre système d'exploitation pour un système anglais.
Mais ce serait trop compliqué, il vous faut retirer le petit renard pour résoudre le problème !
Téléchargez le correctif Unmanaged Exports fourni par Little Fox à l'adresse suivante
https://www.noisyfox.cn/397.html
http://www.magecorn.com/p/280.shtml .
Pour plus de détails, veuillez lire les deux articles ci-dessus
Le propriétaire du code ci-dessus comment n'a pas pu l'exécuter ?
2017.04.28 23:48:08.774 Impossible de trouver 'Add' dans 'Testme.dll'.
Activez l'option "Afficher tous les types de fichiers" dans le navigateur de l'éditeur, saisissez votre DLL à l'aide d'une souris et lancez-la dans la fenêtre MQL5 du programme.
Vous serez probablement surpris par le résultat.
Bonjour à tous. Nous sommes à 2018....
Pouvez-vous me dire où je peux voir des exemples d'appel de fonctions exportées écrites en Net ?
Vous pouvez utiliser C++ stripper avec l'aide d'IJW, et ensuite fusionner le tout en une seule DLL purement au moyen du compilateur - linker, les perversions avec le modèle décrit dans l'article ne sont pas nécessaires, décrites brièvement ici - http://stackoverflow.com/questions/26226958/include-managed-c-sharp-dll-into-unmanaged-c-dll-all-in-one-single-file.
Bien, et la méthode décrite avec le modèle RGiesecke - c'est un hack et un tel tôt ou tard cesse de fonctionner, je, soit dit en passant, n'a pas fonctionné non plus ...Mais si quelqu'un veut toujours jouer avec la méthode IL décrite dans l'article, il y a un autre vélo, bien qu'il ne fonctionne pas non plus - https://github.com/winch/winch.pinkbile.com-c-sharp/tree/master/dll_tool/dll_tool.
Bonjour. Pourriez-vous écrire un exemple de test étape par étape de la construction de c++/c++CLI/c# dans un seul fichier ? Les mêmes exemples simples que l'auteur de l'article.
Veuillez fournir un exemple simple d'une fonction écrite en C# pour y accéder à partir de mt4(ou mt5) ........... Passer les valeurs a et b à une fonction avec Sharp et renvoyer le résultat à mt4(mt5)
dans l'article https://www.mql5.com/ru/article s/249 la dll compilée de l'auteur fonctionne dans mt4 et mt5 correctement !
mais quand j'essaie de créer ma propre dll compilée à partir des sources de l'auteur (dans VisualStudio 2010) cette dll ne fonctionne pas (écrit l'erreur 127)
toutes les versions de .NET sont installées.
// код 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));
}
//+------------------------------------------------------------------+
J'ai passé trois jours et trois nuits à googler et à expérimenter, en général l'exemple fonctionne dans VS2017, j'ai réussi à compiler et à exécuter .dll sous MT4, mais ..... sous Win10 en russe, je n'ai pas pu l'exécuter.
J'ai fait ce qui suit : installé une machine virtuelle avec Win7 - 64, mais en anglais, installé la version anglaise de VS2017, installé seulement le paquet pour C#, copié le modèle de RGiesecke dans le dossier avec les modèles VS2017. Lors de la compilation du projet, ne pas oublier de vérifier la plateforme - nécessairement x86 (pour MT4) . Lors de la première compilation j'ai eu une erreur no namespace RGiesecke, j'ai installé le package UnmanagedExportsdu projet. Tout s'est compilé avec une erreur - ildasm.exe not found, mais .dll fonctionne sous MT4 sans problème.
Le problème est probablement dans le modèle de RGiesecke, il fonctionne correctement dans la version anglaise de Win, dans la version anglaise de VS2017 et tous les chemins dans VS2017 devraient être définis par défaut.
Voici comment cela fonctionne ;)
Cette approche fonctionne-t-elle pour la version 5 de .NET ?
Je ne l'ai pas testé, mais je doute que cela fonctionne
MT4 est très difficile à utiliser en C# - il y a toujours des pièges.
Il est plus facile de passer à MT5.
Mais si vous voulez utiliser MT4 en principe, alors comme option - lancez .dll en C# selon la méthodologie de l'article, et dans celui-ci lancez n'importe quel code C# dans un thread séparé et organisez l'échange, j'ai lancé des bibliothèques C# 64-bit de cette façon.