Ensamblados con al.exe
-
jueves, 26 de abril de 2012 10:23
Hola,
He creado una herramienta para la traducción de los nombres de los controles de cualquier aplicación.
A partir de los ficheros .resources de un form se crean otros archivos de recursos con la traducción realizada. Por último, se crea un archivo de ensamblado con "Al.exe". En este paso es donde se produce el error, la instrucción que empleo es la siguiente:
Process::Start(PathAl, "/nologo /t:lib /culture:es-ES /out:.\\Prueba.resources.dll /embed:.\\Prueba.VC.es-Es.resources");
PathAl == es el directorio donde se encuentra Al.exe
Pero no obtengo ninguna salida y además no sé cómo recuperar los errores que se puedan producir para saber qué está pasando.
¿Sabéis cómo resolver este problema?
Gracias por adelantado.
Saludos.
Liiid
Todas las respuestas
-
viernes, 27 de abril de 2012 10:21Moderador
¿Pones comillas cuando las rutas tienen espacios en blanco? Es decir, comillas dentro de la cadena.
MVP Visual C++ - Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
Otra opción es que ejecutes tu a mano desde una consola lo que hace tu programa y veas qué sale.
También podrías capturar la consola de salida con tu programa y analizar el resultado: http://stackoverflow.com/questions/1574541/reading-output-from-console-program
- Editado RFOGMVP, Moderator viernes, 27 de abril de 2012 10:24
-
viernes, 27 de abril de 2012 11:07
Dentro de un directorio no pongo espacios en blanco pero sí pongo comillas dentro de la cadena, por ejemplo: (marco espacios en blanco como XXX )
String^ PathIn = Environment::GetFolderPath(Environment::SpecialFolder::Desktop)+"\\Trans\\Prueba.VC.es-Es.resources";
String^ PathOut = Environment::GetFolderPath(Environment::SpecialFolder::Desktop)+"\\Trans\\es-Es";
Process::Start(ProgrammAl, "/nologoXXX/t:libXXX/embed:"+PathIn+"XXX/culture:es-ESXXX/out:"+PathOut+"\\Prueba.resources.dll");
No sé si esta era tu pregunta...
Y...¿Cómo podría ver los errores que salen por consola?
Liiid
- Editado Liiid viernes, 27 de abril de 2012 12:01
-
lunes, 30 de abril de 2012 13:44Moderador
Vale, si no hay espacios en blanco en las rutas no es necesario meter comillas. Yo me refería a que cuando, por ejemplo tienes que ejecutar algo como
al C:\Archivos de programa\Programa...
tienes que escribirlo así:
al "C:\Archivos de programa\Programa..."
con lo que la cadena debería ser
"al "\"C:\Archivos de programa\Programa...\""
para que al llamar al programa desde la consola, quede como lo de arriba.
***
Para ver los errores que salen por consola y no liarte a tirar líneas de código para capturar la salida del programa, abre una consola de comandos y ejecuta la línea que ejecuta tu programa, pero tu a mano y verás el error.
De todos modos, para capturar la salida de comandos, aquí tienes esto en C# que se puede traducir a C++/CLI sin mayor problema: http://stackoverflow.com/questions/186822/capturing-console-output-from-a-net-application-c
MVP Visual C++ - Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
- Editado RFOGMVP, Moderator lunes, 30 de abril de 2012 13:44
- Marcado como respuesta Liiid miércoles, 02 de mayo de 2012 14:04
- Desmarcado como respuesta Liiid jueves, 03 de mayo de 2012 13:08
- Marcado como respuesta Liiid lunes, 07 de mayo de 2012 10:49
-
miércoles, 02 de mayo de 2012 13:37
Solucionado!!Gracias!
- Editado Liiid miércoles, 02 de mayo de 2012 14:04
-
jueves, 03 de mayo de 2012 9:52
Hola,
Me ha vuelto a surgir un nuevo problema...
El fallo anterior era que me faltaba el archivo alink.dll para poder ejecutar al.exe, este mensaje de aviso me saltó al llamar al programa desde la consola por lo que copié dicho archivo en mi directorio y pude ejecutarlo desde mi programa en VC++.
Ahora he descubierto que este mensaje no me aparece desde mi programa así que si me falta ese archivo no me podrá dar cuenta...¿Qué tengo que hacer para habilitar esos mensajes(adjunto imagen con el mensaje que se devuelve desde consola)?
Gracias
Liiid

