2009-06-23 7 views
7

Sto provando a scrivere un client SSH per l'iPhone e mi piacerebbe utilizzare la libreria open source libssh2 per farlo. È scritto in C.Considerazioni sull'inclusione della libreria come origine binaria vs

Come devo includere questa libreria C per la mia app per iPhone? Dovrei compilarlo in qualche binario che includo nella mia app, o aggiungo tutta la sorgente al mio progetto e provo a compilarlo insieme al resto della mia app?

risposta

3

sto interpretting questa domanda:

"Devo compilare il codice della libreria C una volta, e includere la libreria binario nel mio progetto O dovrei includere tutti la fonte e compilarlo ogni volta che costruire? la mia app? "

Dipende. Uno dei progetti su cui lavoro dipende da diverse librerie esterne. Fondamentalmente, abbiamo una semplice regola:

  • Pensi di dover cambiare il codice nella libreria C spesso?

    • Se si modifica il codice o si aggiornano spesso le versioni, includere l'origine e crearlo con il resto del progetto.
    • Se non si intende modificare il codice spesso o affatto, potrebbe essere opportuno includere semplicemente il binario precostruito nel progetto.

A seconda delle dimensioni della libreria, si consiglia di configurarlo come obiettivo distinta nel progetto, o per una flessibilità ancora maggiore, come un sotto-progetto del progetto principale.

Se fossi al tuo posto, vorrei costruire libssh2 in anticipo e includere solo la libreria binaria nel mio progetto iPhone. Manterò comunque la sorgente libssh2, naturalmente, nel caso in cui debba essere ricostruita lungo la strada.

1

La libreria iPhone Three20 ha un ottimo howto su come aggiungere la propria libreria al progetto xcode. Dai un colpo.

2

Ho un'app per iPhone al 90% c. Non ho avuto problemi ad aggiungere fonti di terze parti al mio progetto e alla compilazione. Sto usando Lua, zLib e libpng senza modifiche. Ho anche incluso librerie standard come unistd e libgen e funzionano solo ™

+0

Anche la maggior parte della mia app è C, eccetto dove posso usare le API Objective-C. Sono curioso del tuo utilizzo di Lua. Hai intenzione di distribuire tramite iTunes?Lo sto chiedendo perché mi piacerebbe incorporare un interprete, ma sono stato spaventato dalle proibizioni di Apple contro qualsiasi interprete non fornito da Apple. Lua è consentita nell'app store? – Nosredna

+0

Sei libero di usare un linguaggio di scripting, ma non puoi permettere alle persone di caricare codice arbitrario. Per sicurezza compili (codice hard) gli script nell'app. –

0

Penso che a lungo termine sarà meglio costruirlo in una libreria standalone e collegarlo alla tua applicazione. Ciò rende più facile l'integrazione nelle app future. Un altro vantaggio è che incoraggia la separazione dei codici. Se ti senti abbastanza sicuro con la libreria, puoi collegare il tuo debug exe alla build di rilascio della libreria e ottenere prestazioni extra.

Non riesco a pensare a nessun aspetto negativo della creazione di una libreria, dopo il costo iniziale della sua creazione, e di avere un progetto in più da modificare se si apportano alcune modifiche che devono essere apportate a tutti i progetti. Anche se non sai come creare una libreria per l'iPhone, questa è una buona scusa per imparare.

Anche l'aggiunta della fonte al progetto dovrebbe funzionare correttamente.

Problemi correlati