J'ai une bibliothèque C++ (.h seulement) qui contient l'implémentation d'une structure de données et je voudrais l'utiliser dans mon application iPhone.Comment faire pour envelopper une librairie C++ dans Objective-C?
Premièrement, j'ai écrit un wrapper dans Objective-C++ en tant que classe qui, à travers la composition, a un ivar de la classe C++. J'ai ensuite été obligé de changer l'extension de la classe wrapper à .mm
, et cela semblait bien. Mais alors je dois inclure ce fichier de classe enveloppé dans plusieurs autres fichiers, donc je dois aussi changer leur extension (afin d'éviter une vague d'erreurs de compilation).
Ai-je raison? Existe-t-il un moyen de 'confiner' l'extension .mm à quelques fichiers seulement (et ainsi éviter les conflits de noms, etc.)
EDIT: Quelques informations supplémentaires qui pourraient aider, j'utilise LLVM 1.5 comme compilateur (j'ai remarqué que le nombre d'erreurs de compilation varie de GCC 4.2 à LLVM 1.5 mais je ne suis pas sûr que cela signifie beaucoup, puisque je ne les ai pas toutes regardées)
Je ne pense pas que ce soit une bonne idée. Tous les fichiers non-C++ qui incluent cet en-tête ne verront pas les membres protégés, et auront donc des tailles différentes pour les classes et des décalages différents pour les variables d'instance. –
@Kristopher, en utilisant le runtime d'Objective-C moderne (qui est la seule option sur iOS), les variables d'instance ne sont pas fragiles, et ce n'est pas un problème. –
@Barry Wark ty Barry cela semble le moyen le plus facile pour moi, mais il semble que je ne suis pas capable d'y parvenir puisque je reçois des erreurs de compilation http://pastebin.com/tp9Zjhss semble que je manque quelque chose, je pensais ils pourraient être des modèles mais dans votre lien ils sont utilisés. – rano