Discusión sobre el artículo "Exponer código C# a MQL5 usando exportaciones no gestionadas" - página 2
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Espero que RGiesecke responda pronto, puedes seguirlo en
http://stackoverflow.com/questions/4642548/how-to-use-a-net-assembly-in-delphi-without-registering-it-in-the-gac-or-com/5497058#5497058
*Muchas gracias por escribir este artículo, está muy bien escrito y la multitud de ejemplos son extremadamente útiles.
El gran obstáculo para mí fue averiguar los tipos de variables y la forma de pasar de ida y vuelta. (especialmente arrays y strings) Sería genial ver algunas librerías C# compartidas para Metatrader. Una vez que aprenda más y construya algunas librerías útiles, veré si puedo contribuir con ellas.
Me has ahorrado mucho tiempo en lugar de aprender por ensayo y error. Gracias por compartir tus conocimientos.
Se agradece! :-)
Hola
Tengo un problema que de repente (?) mi función DLL devuelve mensaje de error "No se puede encontrar 'Add' en 'TestMe.dll'. Este es un ejemplo sencillo, utilizando su código:
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;
}
}
}
Usándolo en un fichero .mql:
#import "Testme.dll"
int Add(int izquierda,int derecha);
#import
void OnStart()
{
//---
for(int i=0; i<3; i++)
{
Print(Add(i,666));
}
}
--> No se encuentra 'Add' en 'Testme.dll'
¿Hay algún cambio en la forma de llamar a las DLLs que me haya perdido?
Cualquier opinión es muy apreciada
Thomas
Hola
Yo también tengo un problema de repente (funcionó al principio, pero ...), cuando compilé la dll de ejemplo, obtuve
Assembling 'C:\sers\internal228\AppData\Local\Temp\tmpAFBE\UELTest.x86.il' to DLL --> 'C:\sers\internal228\Documents\Visual Studio 2010\Projects\UnmanagedLibTest\UELTest\bin\Debug\x86\UELTest.dll'
El archivo fuente es UNICODE
***** FALLO *****
UELTest
¿Me he perdido algo?
Windows 7; VisualStudio 2010;
Cualquier opinión es muy apreciada.
Risan
**ACTUALIZACIÓN** ¡Lo he solucionado, gracias!
Hola,
Seguí todo el procedimiento para escribir una dll en C# Express 2010. La plantilla no funcionó así que agregué manualmente los archivos dll en un nuevo proyecto y todo compiló bien (tal vez hice algo mal aquí).
Escribí dos funciones fáciles sólo para probar si funciona, y estoy probando fuera de Metatrader 4. Me sale el siguiente error:
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)
¿Alguna idea de cuál podría ser el problema? El DLL se carga mi MT4, he comprobado, pero no quiere llamar a la función. Me di cuenta de que este problema aparece cuando se trata de llamar a un dll administrado en MT4, pero el procedimiento descrito en este artículo se supone que para resolver el problema ¿verdad?
Cualquier ayuda será apreciada
Gracias
Hola,
Me gustaría transmitir mi agradecimiento por un artículo tan bien escrito.
Los datos del sitio de Robert Giesecke son muy valiosos.
He aprendido mucho. No tener que escribir otra envoltura de C++ cuando prefiero VB.NET es algo genial.
Muchas gracias.
Gracias,
Gordon
Hola,
¡¡Tengo el mismo problema.... métodos que decorar no se encuentran en mt5!!
(estoy usando vs2010 y la plantilla)
Artículo publicado Cómo abrir el mundo de C# desde MQL5 exportando código no gestionado:
Autor: investeo
en el articulo https://www.mql5.com/es/articles/249 la dll compilada del autor funciona en mt4 y mt5 correctamente!
pero cuando intento crear mi propia dll compilada a partir de la fuente del autor (en VisualStudio 2010), esta dll no funciona (escribe error 127)
todas las versiones de .NET instaladas
// код 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));
}
//+------------------------------------------------------------------+
y cómo plantilla para participar?
¿quién sabe dónde y cómo se insertan las plantillas en c-sharp, la razón es aparentemente sólo este
y cómo enganchar la plantilla?
http://softblog.violet-tape.ru/2010/05/06/visual-studio-templates/
en la parte inferior para VS2010.
e información útil en la parte inferior.