D'après ce que j'ai compris, le modèle UnmanagedExportLibrary de RGiesecke utilise à certains endroits des commentaires tels que // Code pour l'analyse des fichiers IL. Les Windows-ers russophones y insèrent des commentaires russes comme // Size, et c'est pourquoi son modèle ne fonctionne pas. Il n'y a tout simplement pas de fonctions dans la DLL et c'est la raison pour laquelle l'erreur 127 est déclenchée. C'est dommage, pour ce modèle seulement, je ne veux pas changer le langage d'interface de Windows, même s'il fonctionne assez bien et semble correct, au moins les DLL sont déchargées. Microsoft est aussi un balai, vous pouvez facilement transférer des données de C++ à C#, mais l'inverse est un gros problème.
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)
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 ...
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...
J'ai eu un problème avec une structure avec des variables de type string à l'intérieur de la dll.
J'ai pu envoyer des int, double, float, mais pour les variables de type string, j'obtiens cette erreur :
Access violation read to 0x0000007B
Voici ma structure C# :
[StructLayout(LayoutKind.Sequential, Pack = 1)]
publicstruct accInfo
{
publicstring broker;
// public String server ;publicint account;
// public String user ;publicdouble balance;
public Double credit;
// public String currency ;publicint leverage;
publicint stopout;
publicint stopoutmode;
publicfloat commission;
publicint lotsize;
publicfloat minlot;
publicfloat lotstep;
publicfloat maxlot;
publicfloat gmtOffset;
// public String pair ;publicint digits;
publicint point;
publicint tradeAllowed;
publicint swaptype;
publicfloat swapbuy;
publicfloat swapsell;
publicint stoplevel;
};
Et voici la structure mql4 :
struct accInfo
{
string broker;
// string server ;int account;
// string user ;double balance;
double credit;
// chaîne de devise ;int leverage;
int stopout;
int stopoutmode;
float commission;
int lotsize;
float minlot;
float lotstep;
float maxlot;
float gmtOffset;
// paire de chaînes ;int digits;
int point;
int tradeAllowed;
int swaptype;
float swapbuy;
float swapsell;
int stoplevel;
};
J'ai essayé de marshaller la variable string à l'intérieur de la structure mais MT4 se plante complètement, pas d'erreur juste un blocage et un écrasement dans windows.
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
Merci beaucoup pour cet article. J'ai utilisé les idées présentées ici pour construire cette bibliothèque MQL opensource pour C#.
https://github.com/jseparovic/MQL4CSharp
Elle est encore en cours de développement et n'a pas encore été testée, mais les premiers tests montrent que l'idée fonctionne.
Elle est très basique dans sa façon d'envoyer des commandes à partir de C#, en utilisant un Thread pour le code C# à exécuter, et des getters/setters pour la communication. MQL interroge les commandes en attente toutes les millisecondes, tandis que le code C# peut se bloquer jusqu'à ce que le résultat soit écrit.
Consultez le site https://github.com/jseparovic/MQL4CSharp/blob/master/MQL4CSharp/UserDefined/Strategy/MaCrossStrategy.cs pour un exemple de mise en œuvre d'une stratégie en C#.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Je suis sur un 64 win 8.
Je l'ai compilé avec vs2013.
Cependant, il se charge, mais il y a un appel de fonction d'importation non résolu.
Comment puis-je résoudre ce problème ?
2014.03.05 20:39:59.220 UnmanagedExportsDLLExample1 (XAUUSD,H1) unresolved import function call
2014.03.05 20:39:59.220 UnmanagedExportsDLLExample1 (XAUUSD,H1) Impossible de trouver 'Add' dans '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)
Bonjour,
J'obtiens des erreurs similaires. Comment l'avez-vous résolu ?....
2014.03.28 22:16:41.199 2014.03.25 23:59 unresolved import function call
2014.03.28 22:16:41.199 2014.03.25 23:59 Cannot find 'Set2DArray' in 'Testme.dll'
Si je comprends bien le modèle RGiesecke UnmanagedExportLibrary...
Ce message a été laissé il y a plus de six mois. Y a-t-il eu des changements depuis lors ? ? ???
Première méthode :
J'ai 64 win 7, vs2012 C#. J'ai téléchargé le fichier modèle testme.zip du propriétaire.
Au milieu de l'invite quelques erreurs (mauvais chemin, fichiers manquants, etc. et ainsi de suite), a été résolu.
Mais à la fin, toujours apparaître et et en haut le même problème. Je ne sais pas s'il est résolu maintenant ? Quelle méthode pour le résoudre.
Deuxième méthode :
NuGet a installé le paquet RGiesecke.
https://www.nuget.org/packages/UnmanagedExports/1.2.6
La dernière version de 201311 affiche
Erreur 2 C:\Users\Administrator\AppData\Local\Temp\tmp8B24\dllTest.il(58) : error : syntax error at token '{ ' dans : {
dllTest
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, mais il ne fonctionne pas non plus - https://github.com/winch/winch.pinkbile.com-c-sharp/tree/master/dll_tool/dll_tool.
Bonjour,
J'ai eu un problème avec une structure avec des variables de type string à l'intérieur de la dll.
J'ai pu envoyer des int, double, float, mais pour les variables de type string, j'obtiens cette erreur :
Access violation read to 0x0000007BVoici ma structure C# :
Et voici la structure mql4 :
J'ai essayé de marshaller la variable string à l'intérieur de la structure mais MT4 se plante complètement, pas d'erreur juste un blocage et un écrasement dans windows.
Je vous remercie.
Oui, dans quelque temps nous écrirons un nouvel article sur l'utilisation des DLL. Beaucoup de choses intéressantes y ont été ajoutées.
En attendant, vous pouvez utiliser les exemples de l'article en question. Il n'y a rien de compliqué.
Et ... Combien de temps faut-il encore attendre ? Un an, deux... ou 10 ans ?
Cela fait déjà 3 ans. D'après l'article mentionné au tout début, il n'est pas possible d'importer des méthodes à partir de dll. Où sont les exemples ?
Merci beaucoup pour cet article. J'ai utilisé les idées présentées ici pour construire cette bibliothèque MQL opensource pour C#.
https://github.com/jseparovic/MQL4CSharp
Elle est encore en cours de développement et n'a pas encore été testée, mais les premiers tests montrent que l'idée fonctionne.
Elle est très basique dans sa façon d'envoyer des commandes à partir de C#, en utilisant un Thread pour le code C# à exécuter, et des getters/setters pour la communication. MQL interroge les commandes en attente toutes les millisecondes, tandis que le code C# peut se bloquer jusqu'à ce que le résultat soit écrit.
Consultez le site https://github.com/jseparovic/MQL4CSharp/blob/master/MQL4CSharp/UserDefined/Strategy/MaCrossStrategy.cs pour un exemple de mise en œuvre d'une stratégie en C#.
Merci beaucoup,
Jason