Discussione sull’articolo "Esposizione del codice C# in MQL5 utilizzando esportazioni non gestite" - pagina 2
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Spero che RGiesecke risponda presto, potete seguirlo su
http://stackoverflow.com/questions/4642548/how-to-use-a-net-assembly-in-delphi-without-registering-it-in-the-gac-or-com/5497058#5497058
*Grazie mille per aver scritto questo articolo! È scritto molto bene e la moltitudine di esempi è estremamente utile.
Il grande ostacolo per me è stato capire i tipi di variabili e come passarle avanti e indietro. (Sarebbe bello vedere delle librerie C# condivise per Metatrader. Una volta che avrò imparato di più e costruito delle librerie utili, vedrò di contribuire.
Mi avete fatto risparmiare un sacco di tempo invece di imparare per tentativi ed errori. Grazie per aver condiviso le vostre conoscenze.
È molto apprezzato! :-)
Salve
Ho un problema che improvvisamente (?) la mia funzione DLL restituisce il messaggio di errore "Impossibile trovare 'Add' in 'TestMe.dll'". Questo è un semplice esempio, utilizzando il vostro codice:
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;
}
}
}
Usarlo in un file .mql:
#import "Testme.dll"
int Add(int left,int right);
#import
void OnStart()
{
//---
for(int i=0; i<3; i++)
{
Print(Add(i,666));
}
}
--> Impossibile trovare 'Add' in 'Testme.dll'
C'è un cambiamento nel modo di chiamare le DLL che mi è sfuggito?
Qualsiasi opinione è molto apprezzata
Tommaso
Ciao
Anche io ho un problema improvviso (all'inizio funzionava, ma ...), quando ho compilato la dll di esempio, ho ottenuto
Assemblaggio di 'C:\Users\internal228\AppData\Local\Temp\tmpAFBE\UELTest.x86.il' in DLL --> 'C:\Users\internal228\Documents\Visual Studio 2010\Projects\UnmanagedLibTest\UELTest\bin\Debug\x86\UELTest.dll'
Il file sorgente è UNICODE
***** FALLIMENTO *****
UELTest
C'è qualcosa che mi è sfuggito?
Windows 7; VisualStudio 2010;
Qualsiasi opinione è molto apprezzata.
Risan
**AGGIORNAMENTO** Ho risolto il problema grazie!
Ciao a tutti,
Ho seguito interamente la procedura per scrivere una dll in C# Express 2010. Il modello non funzionava, quindi ho aggiunto manualmente i file dll in un nuovo progetto e tutto è stato compilato correttamente (forse ho sbagliato qualcosa).
Ho scritto due semplici funzioni solo per verificare se funziona e sto eseguendo il test su Metatrader 4. Ricevo il seguente errore:
2011.10.29 20:13:37 2000.01.03 00:00 Expert_NN_1_1 USDJPY,H1: impossibile chiamare la funzione 'sum' dalla dll 'NN 1 DLL.dll'(errore 127)
Qualche idea su quale possa essere il problema? La DLL è caricata nella MT4, ho controllato, ma non vuole chiamare la funzione. Ho notato che questo problema appare quando si cerca di chiamare una DLL gestita nella MT4, ma la procedura descritta in questo articolo dovrebbe risolvere il problema, giusto?
Qualsiasi aiuto sarà apprezzato
Grazie!
Salve,
Vorrei solo esprimere il mio apprezzamento per un articolo così ben scritto.
Le informazioni sul sito di Robert Giesecke sono state preziose.
Ho imparato molto. Non dover scrivere un altro wrapper in C++ quando preferisco VB.NET è una cosa fantastica.
Molte grazie.
Grazie,
Gordon
Ciao,
Ho lo stesso problema.... metodi che decoro non si trovano in mt5 !!!
aiuto! (sto usando vs2010 e il modello)
Articolo pubblicato Come aprire il mondo di C# da MQL5 esportando codice non gestito:
Autore: investeo
nell'articolo https://www.mql5.com/it/articles/249 la dll compilata dell'autore funziona correttamente in mt4 e mt5!
ma quando provo a creare la mia dll compilata dal sorgente dell'autore (in VisualStudio 2010), questa dll non funziona (scrive l'errore 127)
tutte le versioni di .NET installate
// код 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));
}
//+------------------------------------------------------------------+
e come template da inserire?
chi sa dove e come vengono inseriti i template in c-sharp, il motivo è apparentemente solo questo
e come impegnare il template?
http://softblog.violet-tape.ru/2010/05/06/visual-studio-templates/
in fondo per VS2010.
e informazioni utili proprio in fondo.