/ / Creazione di libreria Swift, Objective-C e Static C ++ - c ++, objective-c, swift, xcode

Creazione contemporanea di libreria Swift, Objective-C e Static C ++: c ++, objective-c, swift, xcode

Ho una libreria statica da un SDK di terze parti -è il FIT SDK che codifica e decodifica "Flexible & Interoperable Data Transfer Protocol", utilizzato per varie attrezzature sportive e per il fitness.E 'un formato binario, ben descritto nell'SDK, che viene fornito con un sacco di CPP, C -Sharp e Objective-C esempi - oltre a una libreria statica costruita dalla fonte CPP.

Da quello che tutti sembrano dire, dovrei essere in grado di costruire la mia app Swift con la libreria statica, inclusa l'intestazione di bridging richiesta.

Ho fatto uno screenflow (https://vimeo.com/205082135) mostrando cosa succede, ed è per questo che sono qui.

Posso ottenere Xcode 8 (beta 3) per creare un nuovo, frescoprogetto contenente la libreria e anche qualche codice Objective-C. Non appena aggiungo l'intestazione del bridging, anche con un rudimentale include, i crateri XCode con un errore del linker, lamentano il fatto che non è possibile trovare una classe dalla libreria standard C ++, come o. Sente l'odore di un problema di gestione della configurazione con Xcode che non riesco a risolvere.

Il mio progetto di esempio con la libreria è qui: https://github.com/bleeckerj/Xcode-FIT-TEST

Qualcuno ha mai visto questo genere di cose prima?

risposte:

0 per risposta № 1

Quindi, con un po 'di aiuto e un sacco di tempo e prove sono riuscito a risolvere il problema e rispondere alla mia domanda.

Effettivamente si ha bisogno di un wrapper Objective-Cattorno alla classe C ++ (o Objective-C ++) contenente il codice che si desidera esporre e chiamare da Swift. Poi c'è il Bridging Header che espone solo la classe Objective-C. Questo particolare Heading Bridging è Sembra facile, e ora in effetti è facile - ma è stato un mistero per me. È una storia lunga, quindi la spiego come parte di un repository di esempio https://github.com/bleeckerj/fit-sdk-with-swift derivato dall'SDK FIT che risponde alla domanda con un esempio.

Spero che questo sia in grado di aiutare chiunque si imbatta in questo problema.