2010-08-29 23 views
7

Ho completato una semplice versione numerica del gioco "Towers of Hanoi" utilizzando lo strumento da riga di comando di xcode in C++. Essendo abituato a compilatori di PC come borland's e visual-c, ho tentato di "condividere" il gioco con gli altri via e-mail semplicemente allegando il prodotto eseguibile creato da xcode. Tuttavia, i destinatari non possono eseguire il programma poiché si presenta in un formato diverso, di solito il codice macchina, suona come.prodotto eseguibile xcode per progetto C++

Dopo un po 'di una lunga ricerca, mi rendo conto della complessità dei progetti di costruzione all'interno di IDE di Xcode e le variazioni sulle impostazioni di generazione/target, ecc

Qualcuno sa come costruire un self-contained C++ eseguibile essere universalmente gestito? Non esco dalla libreria STL per questo gioco. Apprezzerei molto ogni aiuto.

grazie

+1

Che non suona come un problema Xcode - suona come l'emailer è confondere le cose - ciò che programma di posta elettronica sta voi ei vostri clienti usando? – Mark

+0

Sto scrivendo tramite Yahoo, ma sono sospettoso se questa è la causa perché ho inviato file .exe da PC attraverso il loro sistema ... – NBG

risposta

0

applicazioni di condivisione attraverso punti versioni dello stesso sistema operativo può essere notoriamente difficile sul Mac (almeno, per quanto riguarda l'esperienza personale va).

Al fine di essere in grado di condividere l'applicazione con il minimo sforzo, è necessario capire:

  • Che tipo di progetto è questo? Stai usando risorse come immagini ecc?
  • Quale versione del sistema operativo utilizzano i tuoi amici? Se non sono sul Mac, sei sfortunato (o dovrai ricompilare per i loro sistemi operativi).
  • Se eseguono Mac, verifica di avere le stesse versioni del sistema operativo, se hai sviluppato su Leopard e qualcuno è in esecuzione su SnowLeopard la tua applicazione potrebbe semplicemente fallire. (Ho anche riscontrato problemi tra Mac OS 10.5.4 e 10.5.3 quindi incrociamo le dita.)
  • Controlla quale tipo di hardware stai utilizzando. Stai costruendo solo il tuo hardware (per esempio, MacIntel) o stai creando un Universal Binary?
  • Assicurarsi che tutte le risorse siano incluse nel pacchetto dell'applicazione. Assicurati che l'applicazione utilizzi solo percorsi relativi.
  • Controllare se non si sta scrivendo in cartelle speciali (ad esempio, utilizzare solo temp e/o posizioni scrivibili in base alla parola, se necessario).

Vorrei poter dare una più dettagliata/alla risposta punto, ma purtroppo si dovrà capire alcune delle risposte da soli (senza altre informazioni sull'errore hai trovato).

+0

Sto usando i termini xcode "strumento da riga di comando", che costruisce C++ nello specifico. Nessuna immagine, suono, ecc. Sono su Leopard OS e non mi aspettavo di incontrare problemi nel tentativo di creare un programma di console universale. E sì, ho provato a costruire un binario universale. Spero che questo dia abbastanza contesto. Grazie per l'aiuto, questa è roba utile. – NBG

5

OS X è basato su Unix, che utilizza come file eseguibili file binari semplici (vale a dire senza estensione di file). Se hanno una certa "autorizzazione eseguibile", possono essere cliccati due volte per essere eseguiti come eseguibili o eseguiti dalla riga di comando. Tuttavia, questa autorizzazione non può essere inviata tramite e-mail - sono metadati all'interno del file system stesso, e questo ha senso dal punto di vista della sicurezza (non si desidera che gli spammer inviino virus eseguibili tramite e-mail?). Così, quando il destinatario riceve il binario, avranno bisogno di eseguire il comando seguente riga di comando su di esso, assumendo "Hanoi" è il nome del file binario:

chmod +x /path/to/hanoi 

Se davvero si vuole confezionare come un un'applicazione a doppio clic istantanea, dovrai dargli un'interfaccia utente nativa e impacchetterla come una .app, quindi inserire l'app (che in realtà è una cartella con l'estensione .app) in un archivio da distribuire. Scusa se è più lavoro di quanto speri. Spero che questo ti aiuti!

+0

No, no, è utile. Anche se, penso che la mia domanda sia formulata in modo improprio; o almeno è incompleto. Forse dovrei chiederlo in questo modo: Sai se è possibile compilare un gioco C++ basato su testo (senza grafica, suoni, ecc.) Per essere compatibile su più piattaforme; in particolare, sai come/se xcode può compilare e creare un prodotto da eseguire ovunque ci sia una console? Mi rendo conto che la mia domanda potrebbe essere male informata. Grazie mille per le tue risposte informative. – NBG

+0

Se per multipiattaforma intendi sia su Mac che su Windows, quindi no-Xcode non ha un compilatore per eseguibili non Mac. Ma dovrebbe essere sicuramente possibile effettuare una cross-compilazione per diverse versioni di Mac OS X. –

+1

Se è davvero necessario essere in grado di creare Mac, Windows e Linux da Xcode, Xcode ha "passi personalizzati" che possono eseguire qualsiasi script da riga di comando. È quindi possibile utilizzare una toolchain cross-compiler che viene eseguita da una riga di comando. Vedi, ad esempio, http://lilypond.org/gub/ (anche se questo è decisamente eccessivo e potrebbe non funzionare nemmeno sui Mac, è solo per dimostrare che è possibile). Il mio consiglio? Trova una macchina Windows e/o Linux, copia i tuoi file C++ e compila separatamente per Windows/Linux. Puoi comunque testare il tuo codice in Xcode. In bocca al lupo! – btown

0

Se si è soddisfatti con uno strumento a riga di comando, piuttosto che un'applicazione doppio cliccabile, dovrebbe essere sufficiente a zip e collegare che per l'e-mail. Assicurati di costruire universale se qualcuno a cui stai inviando potrebbe utilizzare un Mac basato su PowerPC. Oh, e impostare la destinazione di implementazione sul sistema operativo minimo che potrebbe essere utilizzato da qualsiasi destinatario.

+0

Provato questo, inizialmente. L'invio tramite Yahoo produce ogni volta un "file di testo". Ho provato a rinominare, build alternative (distribuzione, rilascio), senza alcun risultato. Sì, ho appena scritto la versione dello strumento da riga di comando. Nessuna grafica, suoni, ecc .; solo il codice incluse le intestazioni standard. Grazie per la risposta tempestiva. Apprezzo davvero l'aiuto, qui. – NBG

Problemi correlati