Per quanto ne so, il modello UnmanagedExportLibrary di RGiesecke utilizza commenti come // Code per il parsing dei file IL in alcuni punti. Gli utenti di Windows di lingua russa inseriscono commenti russi come // Size e questo è il motivo per cui il modello non funziona. Semplicemente non ci sono funzioni nella DLL e questo è il motivo per cui viene lanciato l 'errore 127. È un peccato, per il bene solo di questo modello non voglio cambiare il linguaggio dell'interfaccia di Windows, anche se funziona abbastanza bene e sembra essere corretto, almeno le DLL vengono scaricate. Anche Microsoft è una scopa, si possono trasferire facilmente i dati da C++ a C#, ma il contrario è un grosso problema.
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)
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...
struct accInfo
{
string broker;
// stringa server;int account;
// stringa utente;double balance;
double credit;
// stringa di valuta;int leverage;
int stopout;
int stopoutmode;
float commission;
int lotsize;
float minlot;
float lotstep;
float maxlot;
float gmtOffset;
// coppia di stringhe;int digits;
int point;
int tradeAllowed;
int swaptype;
float swapbuy;
float swapsell;
int stoplevel;
};
Ho provato a marshallare la variabile stringa all'interno della struttura ma MT4 si blocca completamente, nessun errore, si blocca e si blocca in 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
Grazie mille per questo articolo. Ho usato le idee qui per costruire questa libreria MQL opensource per C#.
https://github.com/jseparovic/MQL4CSharp
È ancora in fase di sviluppo e al momento non è stata testata, ma i primi test mostrano che l'idea funziona.
È molto semplice nel modo in cui invia i comandi da C#, utilizzando un thread per l'esecuzione del codice C# e getter/setter per la comunicazione. MQL esegue il polling dei comandi in attesa ogni millisecondo, mentre il codice C# può bloccarsi fino alla scrittura del risultato.
Date un'occhiata a https://github.com/jseparovic/MQL4CSharp/blob/master/MQL4CSharp/UserDefined/Strategy/MaCrossStrategy.cs per un esempio di implementazione di una strategia in C#.
Sono su un 64 win 8.
L'ho compilato con vs2013.
Tuttavia, viene caricato, ma c'è una chiamata di funzione di importazione non risolta.
Come posso risolvere questo problema?
2014.03.05 20:39:59.220 UnmanagedExportsDLLExample1 (XAUUSD,H1) chiamata di funzione di importazione non risolta
2014.03.05 20:39:59.220 UnmanagedExportsDLLExample1 (XAUUSD,H1) Impossibile trovare 'Add' in '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)
Ciao,
Sto ricevendo errori simili. Come hai risolto?...
2014.03.28 22:16:41.199 2014.03.25 23:59 chiamata di funzione di importazione non risolta
2014.03.28 22:16:41.199 2014.03.25 23:59 Impossibile trovare 'Set2DArray' in 'Testme.dll'
Per quanto ho capito il modello RGiesecke UnmanagedExportLibrary...
Questo messaggio è stato lasciato più di mezzo anno fa. È cambiato qualcosa da allora????
Metodo 1:
Ho 64 win 7, vs2012 C#. Ho scaricato il file modello testme.zip del proprietario.
Nel mezzo del prompt alcuni errori (percorso sbagliato, file mancanti, ecc. e così via), è stato risolto.
Ma alla fine, appare ancora e e di sopra lo stesso problema. Non so se ora è risolto? Quale metodo per risolvere.
Metodo due:
NuGet installato pacchetto RGiesecke.
https://www.nuget.org/packages/UnmanagedExports/1.2.6
L'ultima versione del 201311 richiede
Errore 2 C:\Users\Administrator\AppData\Local\Temp\tmp8B24\dllTest.il(58) : errore: errore di sintassi al token '{ ' in: {
dllTest
È possibile utilizzare lo stripper C++ con l'aiuto di IJW, e poi unire tutto in un'unica DLL puramente per mezzo del compilatore - linker, non sono necessarie perversioni con il modello descritto nell'articolo, descritto brevemente qui - http://stackoverflow.com/questions/26226958/include-managed-c-sharp-dll-into-unmanaged-c-dll-all-in-one-single-file.
Beh, e il metodo descritto con il modello RGiesecke - è un hack e tale prima o poi smette di funzionare, io, tra l'altro, anche non ha funzionato ...Ma se qualcuno vuole ancora giocare con il metodo IL descritto nell'articolo, c'è un'altra moto, ma non funziona nemmeno - https://github.com/winch/winch.pinkbile.com-c-sharp/tree/master/dll_tool/dll_tool.
Salve,
Qualcuno è riuscito a inviare una struttura con variabili stringa all'interno, alla dll?
Sono riuscito a inviare int, double, float, ma per le variabili stringa ottengo questo errore:
Access violation read to 0x0000007BEcco la mia struttura C#:
E qui la struttura mql4:
Ho provato a marshallare la variabile stringa all'interno della struttura ma MT4 si blocca completamente, nessun errore, si blocca e si blocca in windows.
Grazie.
Sì, tra qualche tempo scriveremo un nuovo articolo sull'uso delle DLL. Sono state aggiunte molte cose interessanti.
Nel frattempo, è possibile utilizzare gli esempi dell'articolo in discussione. Non c'è nulla di complicato.
E ... Quanto tempo bisogna aspettare? Un anno, due... o 10?
Sono già passati 3 anni. Secondo l'articolo citato all'inizio non è possibile importare metodi da dll. Dove sono gli esempi?
Grazie mille per questo articolo. Ho usato le idee qui per costruire questa libreria MQL opensource per C#.
https://github.com/jseparovic/MQL4CSharp
È ancora in fase di sviluppo e al momento non è stata testata, ma i primi test mostrano che l'idea funziona.
È molto semplice nel modo in cui invia i comandi da C#, utilizzando un thread per l'esecuzione del codice C# e getter/setter per la comunicazione. MQL esegue il polling dei comandi in attesa ogni millisecondo, mentre il codice C# può bloccarsi fino alla scrittura del risultato.
Date un'occhiata a https://github.com/jseparovic/MQL4CSharp/blob/master/MQL4CSharp/UserDefined/Strategy/MaCrossStrategy.cs per un esempio di implementazione di una strategia in C#.
Grazie,
Jason