Discusión sobre "Cómo escribir una DLL para MQL5 e intercambiar datos en 10 minutos". - página 10
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
Esa es la cuestión, el script simplemente se echa a perder, ¿cómo puedo ver el código de error después de eso? O la próxima vez que se ejecute, ¿puede leerse inmediatamente?
En principio, el problema se solucionó compilando la dll para 64x. Aunque, después de eso me salieron más errores, pero no es importante. Sólo necesitaba entender cómo construir y enlazar librerías para c/s++ a mql5 en general. Mi ejemplo funciona bien ahora.
Si tienes Studio 2017 y estás viendo estas instrucciones para tu antiguo estudio y no sabes qué hacer o cómo hacerlo, te recomiendo que primero leas este artículo: https://docs.microsoft.com/ru-ru/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=vs-2017
Luego, cuando hayas creado tu dll, siguiendo el ejemplo de este artículo y lo hayas probado en una aplicación cliente, lee esta instrucción, a partir del punto 2, "En el programa MQL5 debe describirse y llamarse así:". En otras palabras, declare su dll en mt5 como se describe allí.
Yo he resuelto mi problema de esta manera.
Me gustaría tener una lista de correlaciones de tipos entre C++ y MQL en forma de macros.
#define MQL_STRING wchar_t
Aquí está mi código en Visual Studio 2012 C++. Archivo main. con extensión cpp (main.cpp)
Luego creé un archivo con extensión main def (main.def), que tiene una listade funciones exportadas, el código se ve así :
LIBRARY "dllmt42" EXPORTS add
Luego lo importé en el compilador
No hay problemas después de la compilación, pero cuando se deja el EA en el gráfico, me confunde
Llamada a función de importación no resuelta, encontrar '_add' en 'dllmt42.dll'. Total Comander ve la función así como el propio compilador al arrastrar el archivo
¿Quién puede ayudar, cómo resolver el problema con el error, después de todo hay un archivo con extensión .def que almacena y es responsable de la correcta exportación de las funciones?
Aquí está mi código en Visual Studio 2012 C++. El archivo main. con extensión cpp (main.cpp)
Luego creé un archivo con extensión main def (main.def), que tiene una listade funciones exportadas, el código se ve así :
Luego lo importé en el compilador
No hay problemas después de la compilación, pero cuando se deja el EA en el gráfico, me confunde
Llamada a función de importación no resuelta, encontrar '_add' en 'dllmt42.dll'. Total Comander ve la función así como el propio compilador al arrastrar el archivo
¿Quién puede ayudar, cómo resolver el problema con el error, después de todo hay un archivo con extensión .def que almacena y es responsable de la exportación correcta de las funciones?
Se debe añadir "C" externo tanto a las declaraciones como a las implementaciones de las funciones exportadas, ya que esto es C++. De lo contrario, las firmas de entrada son "más" y MT (al igual que todos los demás) no las verá.
Se debe añadir "C" externo tanto a las declaraciones como a las implementaciones de las funciones exportadas, ya que C++ está aquí. De lo contrario, las firmas de entrada son "más" y MT (como todo el mundo) no las verá.
Bueno, lo he añadido así
Pero sigue ocurriendo lo mismo:llamada a función de importación no resuelta, encontrar '_add' en 'dllmt42.dll'... Es decir, ¿necesito C puro sin ++?
El archivo .def no es necesario en absoluto. Es necesario duplicar las funciones en la sección #import en MQL
Bueno, sí, y lo hizo sin ella vi y tal, no voy, bueno, muéstrame lo que se duplica ya señalar el camino?