Llamando a las tuberías con nombre dll de MT5. ¿Cómo? - Página 3
Llamando a las tuberías con nombre dll de MT5. ¿Cómo?

 

Publi

Página 3 de 354 PrimerPrimer 1234 ??ltimo??ltimo
Resultados 21 al 30 de 31

Tema: Llamando a las tuberías con nombre dll de MT5. ¿Cómo?

  1. #21
    ok, por lo que leí de su respuesta y lo que he leído de los enlaces ... me suena como si no hubiera implementado la solución de Robert Giesecke correctamente. Supongo que acaba de copiar el ejemplo de prueba y de haber archivado los archivos de Robert en algún lugar, pero en realidad no lo configuró correctamente. Si me equivoco, ignora lo siguiente: comprueba que has seguido las instrucciones correctamente desde aquí.
    http://sites.google.com/site/robertg...-does-it-work-. Parece que tienes 2 opciones. carga su plantilla predeterminada que ya está configurada de tal manera que solo puedes completar los espacios en blanco, o tienes que editar algunas de las agallas de tu proyecto .net para asegurarte de que funciona su mierda y altera las banderas de tus proyectos cuando se compila . consideraría comenzar un nuevo proyecto usando su plantilla, ver qué es qué, luego intentar copiar y pegar su código existente en esta plantilla. Los archivos que se incluyen automáticamente con su plantilla en el proyecto son obviamente la clave para que su función se exporte como código no administrado. edición: ejemplo eliminado ... duplicado desde el enlaceedición original al final del día, no entiendo por qué es tan reacio a que mql5 llame directamente a las funciones de la tubería del kernel32 ... me parece que eres simplemente insertando MÁS código y pasos al insistir en importar una biblioteca .net que finalmente manejará las llamadas de la función de canalización. para cuando se haya interpretado el código mql5 (o, sin embargo, mt5 maneja los scripts mql) será probablemente tan rápido o quizás más rápido que tener mql5 enviando datos a una .net lib que traduce el código no adaptado al código administrado y luego lo hace. neta interpreta el código administrado para luego finalmente lidiar con las llamadas de la función de canalización. Todavía estoy escupiendo bolas porque esto es interesante, así que siéntete libre de ignorarme.

  2.                         
    Publicidad
  3. #22

    Cita Iniciado por ;
    Si mi suposición es correcta, entonces puedes seguir intentando hacerlo de la misma manera todo el año y llegar a ninguna parte. El artículo al que me vinculé mostró cómo implementar una clase mql5 que tratará directamente con las llamadas de tubería kernel32.dll y otras cosas.
    Investeo también escribió este artículo:
    http://www.mql5.com/en/articles/249Ahí es donde obtuve la simple función de agregar a través de una DLL. La DLL allí es solo del espacio de nombres Testme que compila a Testme.dll. Esa DLL personalizada está siendo llamada desde MT5. Siento que estoy haciendo lo mismo, pero evidentemente no. Ese artículo demuestra que es posible y relativamente simple. Creo que sólo estoy perdiendo algo pequeño.
    Cita Iniciado por ;
    Ya sea porque la dll de .net sea diferente o no, debe tratar con el manejo de la tubería directamente dentro de mql5 en lugar de quedarse atascado en el bloqueo actual de no poder importar una dll ofensiva.
    No quiero usar código nativo de MQL45 para abrir y usar la canalización. En última instancia, necesito usar C # en la medida de lo posible, así que prefiero hacer que esto funcione desde cero. Intenté seguir esta ruta pero no pude hacer que funcionara con las funciones exportadas de kernel32.dll. Créeme, lo intenté y lo intenté ... La pregunta original sigue en pie: mi pregunta general es ¿cómo puedo llamar correctamente a mi SendString (string someParameter)?

  4. #23

    Cita Iniciado por ;
    Estoy muy familiarizado con ese artículo. Ese es el que usé primero, pero tratar de obtener la función NamedPipeServerStream () con todos los sobrecargados combinados fue una pesadilla. Incluso estoy tratando de ser completamente básico con esto: Código insertado # 91; DllExport (Add, CallingConvention = CallingConvention.StdCall) # 93; public static int Add (int left, int right) {return left right; } Código MQL para agregar dos enteros: [código] #import PipeServer.dll int Add (int left, int right); #import///--------------------------------------------- --------------------- /| ...
    Parece que estás haciendo esto de manera equivocada ... tu problema, según tengo entendido, es que mql45 probablemente no está diseñado con .net en mente (puramente mi propia especulación) y en su lugar espera el tipo de bibliotecas win32 al intentar importar. Si mi suposición es correcta, entonces puedes seguir intentando hacerlo de la misma manera todo el año y llegar a ninguna parte. El artículo al que me vinculé mostró cómo implementar una clase mql5 que tratará directamente con las llamadas de tubería kernel32.dll y otras cosas. está intentando insertar un archivo .net dll que nunca va a funcionar con facilidad (o quizás nunca) en un script mql5 para manejar el manejo de tuberías, pero en lugar de eso, podría estar manejando las tuberías directamente DENTRO de mql5 sin importar nada más que kernel32 . Parece que puede eliminar completamente el problema ofensivo de intentar importar un archivo DLL en particular que simplemente no encaja en la metodología de importación mql5. Copie el código en el artículo e importe el kernel32 (si lo leí correctamente). luego simplemente haga todo el manejo de su tubería directamente dentro de mql5. Ya sea porque la dll de .net sea diferente o no, debe tratar con el manejo de la tubería directamente dentro de mql5 en lugar de quedarse atascado en el bloqueo actual de no poder importar una dll ofensiva. De nuevo, no estoy familiarizado con mql5 y c #, así que podría estar hablando de mierda total. edit: también vea este ejemplo de código mql4 y simplemente copiepegue y vuelva a trabajar según sea necesario para masajearlo en mql5 si no es un código 100% compatible: http://www.forum.com/showthread.php?t = 125117

  5. #24
    Estoy muy familiarizado con ese artículo. Ese es el que usé primero, pero tratar de obtener la función NamedPipeServerStream () con todos los sobrecargados combinados fue una pesadilla. Incluso estoy tratando de ser completamente básico con esto: Código insertado # 91; DllExport (Add, CallingConvention = CallingConvention.StdCall) # 93; public static int Add (int left, int right) {return left right; } Código MQL para agregar dos enteros: Código insertado #import PipeServer.dll int Add (int left, int right); #import///--------------------------------------------- --------------------- /| Función de inicio del programa de script |/ ----------------------------------------------- ------------------- void OnStart () {for (int i = 0; ilt; 3; i ) {Print (Add (i, 10)); }} Todavía estoy recibiendo el mismo error. No parece importar si es una función compleja como leerescribir adesde una tubería o una simple función de agregar. Creo que lo estoy llamando una noche!

  6. #25
    Cita Iniciado por ;
    La capacidad de obtener esto escritotrabajando con C # es una necesidad absoluta. La hoja de ruta definitiva para lo que funcionará con esto está basada en C #. No C # es un factor decisivo en mi situación. No pensé que las bibliotecas de C # fueran el gran problema. Ya tengo el cliente y el servidor hablando estrictamente a través de C # (básicamente, directamente desde MSDN). Es cuando introduzco MT5 que las cosas van mal. Alguien de aquí tiene que ser capaz de detectar el pequeño dato simple que me estoy perdiendo. Hasta entonces,
    Solo estoy sugiriendo que la parte de lecturaescritura de mql en las tuberías esté en c como un puente de mt5 al sistema operativo y las tuberías. solo debe ser una pequeña DLL puramente diseñada para leerescribir en tuberías y nada más. Después de eso, cualquier cosa que haga en su aplicación principal de c # es irrelevante, ya que puede leerescribir en tuberías desde su aplicación de manera normal. su problema parece ser, por lo que puedo decir, que las bibliotecas .net parecen ser diferentes a las de antes, y supongo que mql45 se basa en una biblioteca c , no en las bibliotecas .net. Esto podría ser relevante, y quizás una solución aún mejor. No leí todo, pero parece ser una solución mql5:
    http://www.mql5.com/en/articles/115De todos modos, creo que me he quedado sin ideas.

  7. #26
    La capacidad de obtener esto escritotrabajando con C # es una necesidad absoluta. La hoja de ruta definitiva para lo que funcionará con esto está basada en C #. No C # es un factor decisivo en mi situación. No pensé que las bibliotecas de C # fueran el gran problema. Ya tengo el cliente y el servidor hablando estrictamente a través de C # (básicamente, directamente desde MSDN). Es cuando introduzco MT5 que las cosas van mal. Alguien de aquí tiene que ser capaz de detectar el pequeño dato simple que me estoy perdiendo. Hasta entonces,

  8. #27
    esto despertó mi curiosidad (gracias por eso por cierto). Parece que c # es el diablo. desde mi ingenua lectura, las bibliotecas c # no son lo mismo que las bibliotecas c y así sucesivamente. Todo el aspecto .net cambia el juego.
    http://www.vistax64.com/net-general/...c-project.htmlsi puede escribir el dll en c , o joder, incluso delphi (tal vez uno de los compiladores de pascal gratuitos que flotan en estos días), entonces puede ahorrarse un montón de dolor de cabeza.

  9. #28
    Jaja ... a veces esto se pone borroso, estoy de acuerdo. Al pasar de C # a C #, podría ingresar texto en Console.Readline y Console.Writeline y hacer que se rellene en el otro lado a través de la tubería stre. No se necesitaron punteros. Ahora si puedo simplemente averiguar cómo hacer que MQL5 haga lo mismo. Sé que no soy el primero en intentar esto, así que espero que si los miembros deforosforexpueden ayudar a que esto funcione, todos puedan usarlo.

  10. #29

    Cita Iniciado por ;
    Por eso dije que no importaba si intentaba pasar diferentes tipos de datos. Lo he intentado con int y doble también. Ni siquiera me estoy metiendo en matrices todavía. La línea que tenía Main (string [] args) se comentó porque esa línea se usa cuando quiero ejecutar el código como un archivo exe en lugar de compilarlo en una dll.
    Mis ojos están borrosos y leí completamente tu texto de una manera diferente a como lo dijiste. mi error. Todavía tengo la sospecha de que dentro de tu dll necesitas usar un tipo de puntero para recibir la dirección. No creo que puedas pasar datos desde fuera de una DLL de la manera que lo has hecho. pero, nuevamente, sugieres que funcione cuando cargues desde otro exe, simplemente no mt5 ... así que me callaré y dejaré de adivinar.

  11. #30
    Por eso dije que no importaba si intentaba pasar diferentes tipos de datos. Lo he intentado con int y doble también. Ni siquiera me estoy metiendo en matrices todavía. La línea que tenía Main (string [] args) se comentó porque esa línea se usa cuando quiero ejecutar el código como un archivo exe en lugar de compilarlo en una dll.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.