2010-08-29 37 views
7

He completado una simple versión numérica del juego "Torres de Hanoi" utilizando la herramienta de línea de comandos de xcode en C++. Al estar acostumbrado a los compiladores de PC como Borland's y Visual-C, he intentado "compartir" el juego con otros por correo electrónico simplemente adjuntando el producto ejecutable creado por xcode. Sin embargo, los destinatarios no pueden ejecutar el programa tal como aparece en un formato diferente, por lo general suena como un código de máquina.producto ejecutable de xcode para el proyecto C++

Después de un poco de una extensa búsqueda, me estoy dando cuenta de la complejidad de los proyectos de construcción dentro del IDE de Xcode y las variaciones en los valores de creación/objetivos, etc.

Alguien sabe cómo construir un auto-contenida C++ ejecutable para ser universalmente ejecutado? No salgo de la biblioteca de STL para este juego. Agradecería enormemente cualquier ayuda.

gracias

+1

Eso no suena como un problema de xcode - parece que el correo electrónico está estropeando cosas - ¿qué programa de correo electrónico utilizan usted y sus clientes? – Mark

+0

Estoy enviando un correo electrónico a través de Yahoo, pero sospecho si esa es la causa, ya que he enviado archivos .exe de PC a través de su sistema ... – NBG

Respuesta

0

aplicaciones de intercambio a través de comunicados de puntos del mismo sistema operativo pueden ser muy difíciles en el Mac (al menos, en lo que va experiencia personal).

Con el fin de poder compartir su aplicación con la menor cantidad de esfuerzo, usted tiene que averiguar:

  • ¿Qué tipo de proyectos es esto? ¿Estás usando recursos como imágenes, etc.?
  • ¿Qué versión del SO están usando tus amigos? Si no están en la Mac, no tiene suerte (o tendrá que volver a compilar para su OS-es).
  • Si ejecutan Mac, compruebe que tiene las mismas versiones de sistema operativo, si se ha desarrollado en Leopard y alguien está ejecutando en SnowLeopard, su aplicación podría simplemente fallar. (También me topé con problemas entre Mac OS 10.5.4 y 10.5.3 así que mantén los dedos cruzados.)
  • Comprueba qué tipo de hardware estás ejecutando. ¿Está construyendo para su hardware (por ejemplo, MacIntel) solamente o está creando un binario universal?
  • Asegúrese de que todos los recursos estén empaquetados en su paquete de aplicaciones. Asegúrese de que su aplicación use solo rutas relativas.
  • Compruebe si no está escribiendo en carpetas especiales (es decir, use solo temp y/o ubicaciones de escritura por palabra, si es necesario).

Ojalá pudiera dar una respuesta más detallada/al punto, pero desafortunadamente usted tendrá que averiguar algunas de las respuestas usted mismo (sin ninguna otra información específica sobre el error que está recibiendo).

+0

Estoy usando lo que xcode términos "herramienta de línea de comandos", que compila C++ específicamente. No hay imágenes, sonidos, etc. Estoy en Leopard OS y no esperaba tener problemas al tratar de crear un programa de consola universal. Y sí, he intentado construir un binario universal. Espero que esto dé suficiente contexto. Gracias por la ayuda; esto es algo útil. – NBG

5

OS X se basa en Unix, que utiliza archivos binarios simples (es decir, sin extensión de nombre de archivo) como ejecutables. Si tienen un cierto "permiso ejecutable", se les puede hacer doble clic para que se ejecuten como ejecutables o se ejecuten desde la línea de comando. Sin embargo, este permiso no se puede enviar por correo electrónico, son metadatos dentro del propio sistema de archivos, y esto tiene sentido desde el punto de vista de la seguridad (no querría que los spammers le envíen virus ejecutables por correo electrónico ¿no?). Así que cuando el destinatario recibe el binario, que tendrá que ejecutar el siguiente comando en la línea de comandos, asumiendo "Hanoi" es el nombre del archivo binario:

chmod +x /path/to/hanoi 

Si realmente se quiere utilizar como una Al instante la aplicación se puede hacer doble clic, deberá darle una interfaz de usuario nativa y empaquetarla como .app, luego colocar esa .app (que en realidad es una carpeta con la extensión .app) en un archivo para distribuir. Lo siento si eso es más trabajo de lo que esperabas. ¡Espero que esto ayude!

+0

No, no, eso es útil. Aunque, creo que mi pregunta está redactada incorrectamente; o al menos está incompleto. Tal vez debería preguntarlo de esta manera: ¿Sabes si es posible para mí compilar un simple juego de C++ basado en texto (sin gráficos, sonidos, etc.) para que sea compatible con plataformas cruzadas? específicamente, ¿sabes cómo/si xcode puede compilar y construir un producto para ejecutar en cualquier lugar donde haya una consola? Me doy cuenta de que mi pregunta puede estar mal informada. Muchas gracias por sus respuestas informativas. – NBG

+0

Si se refiere a multiplataforma tanto en Mac como en Windows, entonces no-Xcode no tiene un compilador para ejecutables que no sean Mac. Pero definitivamente debería ser posible realizar una compilación cruzada para diferentes versiones de Mac OS X. –

+1

Si realmente necesita poder compilar para Mac, Windows y Linux desde Xcode, entonces Xcode tiene "pasos de compilación personalizados" que pueden ejecutar cualquier secuencia de comandos de línea de comandos. A continuación, puede utilizar una cadena de herramientas de compilación cruzada que se ejecuta desde una línea de comando. Ver, por ejemplo, http://lilypond.org/gub/ (aunque definitivamente es excesivo y puede que ni siquiera funcione en Mac, es solo para mostrar que es posible). ¿Mi consejo? Busque un equipo con Windows y/o Linux, copie sus archivos C++ y compile para Windows/Linux por separado. Sin embargo, puedes probar tu código en Xcode. ¡Buena suerte! – btown

0

Si está satisfecho con una herramienta de línea de comandos en lugar de una aplicación de doble clic, bastará con comprimirla y adjuntarla al correo electrónico. Asegúrate de crear universales si alguien a quien le estás enviando podría estar usando una Mac basada en PowerPC. Ah, y establezca el destino de despliegue en el SO mínimo que cualquier destinatario podría estar utilizando.

+0

Intenté eso, inicialmente. Enviando a través de Yahoo, produce un "archivo de texto" cada vez. He intentado cambiar el nombre, compilaciones alternativas (implementación, lanzamiento), en vano. Sí, hasta ahora solo he escrito la versión de la herramienta de línea de comandos. Sin gráficos, sonidos, etc .; solo el código incluyendo encabezados estándar. Gracias por su respuesta oportuna. Realmente aprecio la ayuda, aquí. – NBG

Cuestiones relacionadas