Discussion de l'article "Exposer le code C# à MQL5 à l'aide d'exportations non gérées" - page 2
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
J'espère que RGiesecke répondra bientôt, vous pouvez le suivre à l'adresse suivante
http://stackoverflow.com/questions/4642548/how-to-use-a-net-assembly-in-delphi-without-registering-it-in-the-gac-or-com/5497058#5497058
*Merci beaucoup d'avoir écrit cet article, qui est très bien rédigé et dont la multitude d'exemples est extrêmement utile.
Le grand obstacle pour moi a été de comprendre les types de variables et comment les passer d'un côté à l'autre (en particulier les tableaux et les chaînes). (Une fois que j'en saurai plus et que j'aurai construit quelques bibliothèques utiles, je verrai si je peux y contribuer.
Vous m'avez fait gagner beaucoup de temps au lieu d'apprendre par essais et erreurs. Merci de partager vos connaissances.
C'est très apprécié ! :-)
Bonjour
J'ai un problème : soudainement ( ?) ma fonction DLL renvoie le message d'erreur "Cannot find 'Add' in 'TestMe.dll'". Voici un exemple simple, utilisant votre code :
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 ;
}
}
}
Utilisation dans un fichier .mql :
#import "Testme.dll"
int Add(int left,int right) ;
#import
void OnStart()
{
//---
for(int i=0 ; i<3 ; i++)
{
Print(Add(i,666)) ;
}
}
--> Impossible de trouver 'Add' dans 'Testme.dll'
Y a-t-il un changement dans la façon d'appeler les DLL que j'ai manqué ?
Tout avis est le bienvenu.
Thomas
Bonjour
J'ai aussi un problème soudain (ça marchait au début, mais ...), quand j'ai compilé la dll d'exemple, j'ai obtenu
Assemblage de 'C:\Users\internal228\AppData\Local\Temp\tmpAFBE\UELTest.x86.il' en DLL --> 'C:\Users\internal228\Documents\Visual Studio 2010\Projects\UnmanagedLibTest\UELTest\bin\Debug\x86\UELTest.dll'
Le fichier source est UNICODE
***** FAILURE *****
UELTest
Ai-je oublié quelque chose ?
Windows 7 ; VisualStudio 2010 ;
Toute opinion est grandement appréciée.
Risan
**MISE A JOUR** C'est réglé, merci !
Bonjour, j'ai suivi la procédure à la lettre pour écrire une dll en C# Express 2010,
J'ai suivi entièrement la procédure pour écrire une dll en C# Express 2010. Le modèle n'a pas fonctionné donc j'ai ajouté manuellement les fichiers dll dans un nouveau projet et tout s'est compilé correctement (j'ai peut-être fait quelque chose de mal ici).
J'ai écrit deux fonctions simples juste pour tester si cela fonctionne, et je teste à partir de Metatrader 4. J'obtiens l'erreur suivante :
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)
Une idée de ce qui pourrait être le problème ? La DLL est chargée dans MT4, j'ai vérifié, mais elle ne veut pas appeler la fonction. J'ai remarqué que ce problème apparaît lorsque l'on essaie d'appeler une dll gérée dans MT4, mais la procédure décrite dans cet article est censée résoudre le problème, n'est-ce pas ?
Toute aide sera appréciée
Merci de votre aide.
Bonjour,
Je tiens à vous faire part de mon appréciation pour cet article si bien écrit.
Les informations sur le site de Robert Giesecke sont inestimables.
J'ai beaucoup appris. Ne pas avoir à écrire un autre wrapper C++ alors que je préfère VB.NET est une bonne chose.
Merci beaucoup.
Merci beaucoup,
Gordon
Bonjour, j'ai le même problème,
J'ai le même problème.... méthodes que je décore ne sont pas trouvées dans mt5 ! !!
Je suis en train d'utiliser vs2010 et le template.
Article publié Comment ouvrir le monde de C# depuis MQL5 en exportant du code non géré:
Auteur : investeo
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 de la source de l'auteur (dans VisualStudio 2010), cette dll ne fonctionne pas (écrit l'erreur 127)
toutes les versions de .NET 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));
}
//+------------------------------------------------------------------+
et comment les gabarits peuvent-ils s'engager ?
Qui sait où et comment les gabarits sont insérés dans c-sharp, la raison est apparemment seulement cette
et comment engager le gabarit ?
http://softblog.violet-tape.ru/2010/05/06/visual-studio-templates/
en bas pour VS2010.
et des informations utiles tout en bas.