Dev - C++ - Obtener salida de .exe desde C++

 
Vista:
sin imagen de perfil

Obtener salida de .exe desde C++

Publicado por Emi (2 intervenciones) el 25/05/2016 16:50:53
Buenas a todos.

Compilé un .exe a partir de una aplicación de MATLAB, de modo que ahora puedo ejecutarla de forma autónoma. Mi pregunta es si es posible, pasándole los parámetros de entrada, obtener las salidas que genera la función, para hacer el proceso de forma transparente (mi .exe no se trata de un GUI). Todo esto desde C++.

He visto que se suelen utilizar las tuberías (pipes) pero no tengo muy claro cómo y cuándo se usan.

Agradeceré la ayuda ya que no tengo otra manera de ejecutar mi aplicación y me hace bastante falta.

Mil gracias. Un saludo,

Emilio.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Obtener salida de .exe desde C++

Publicado por agustin (522 intervenciones) el 26/05/2016 11:34:33
No me ha quedado nada claro lo que quieres hacer. Si una aplicación es ejecutada por otra, esta última tendrá su handle o manejador y al cerrarse la primera podrás saber el valor de retorno.
Si lo que pretendes es pasar parámetros de una a otra y recibir el valor de retorno hay varios opciones como pipes, memoria compartida, o sockets o crearte un loader debugger el cual tendrá total acceso y podrás saber lo que quieras.
Explica mejor lo que quieres hacer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Obtener salida de .exe desde C++

Publicado por Emi (2 intervenciones) el 26/05/2016 11:53:12
Buenos días.

En primer lugar, gracias por tu respuesta.

Me explico un poco mejor: he creado una aplicación con MATLAB que para poder ejecutar de forma autónoma (Stand-Alone) sin necesidad de MATLAB en otro PC, necesita ser compilada en un .exe (opción que te brinda MATLAB). Existe también la exportación de código C/C++ pero me ha dado más problemas debido a la incompatibilidad de algunas funciones nativas.

El caso... Que he exportado mi función a un ejecutable .EXE y mi intención es llamarlo desde un código C++ en el que estoy trabajando. De este modo puedo obtener su salida y procesarla para terminar ofreciendo la información necesaria al usuario a través de un GUI.

Finalmente he conseguido hacerlo utilizando Pipes (con un código como el de la última respuesta de este foro: http://www.cplusplus.com/forum/windows/10766/). Pero de todos modos gracias por tu respuesta.

Mi problema ahora es otro. Los ejecutables creados por el MATLAB Compiler tardan un tiempo considerable en precargar toda la parafernalia... Concretamente tardo unos 6s en obtener una respuesta, mientras que el código sí se ejecuta en un tiempo similar al que lo hacía en MATLAB. El grueso de este tiempo, como os digo, viene a la hora de cargar. ¿Existe alguna forma de acelerar el proceso?

He leído por algún lado que MATLAB Compiler carga todas las toolboxes por defecto. Quizás exista alguna forma de descartar algunas para acelerar el proceso de carga. No lo sé...

Gracias de antemano.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Obtener salida de .exe desde C++

Publicado por agustin (522 intervenciones) el 27/05/2016 17:16:43
Si te permite exportar a código c/c++ esa es la mejor opción. Si hay alguna función incompatible es cuestión de hacerte una que haga lo mismo o usar otra función nativa de c/c++. Si pones el código que genera matlab y dices en que función da el error y que es realmente lo que hace tu código seria más fácil ayudarte. Yo no he usado nunca matlab.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar