2010-12-09 81 views
3

Comme j'ai entendu dire qu'il est possible d'utiliser le code C++ dans un projet iPhone (Objective C), je souhaite utiliser une bibliothèque de chiffrement écrite en C++. Cependant, la bibliothèque utilise une structure de type C++ qui utilise un constructeur, que je ne peux pas corriger.Utilisation de la structure C++ avec l'application iPhone

struct ressemble à ceci:

struct SBlock 
{ 
//Constructors 
SBlock(unsigned int l=0, unsigned int r=0) : m_uil(l), m_uir(r) {} 
//Copy Constructor 
SBlock(const SBlock& roBlock) : m_uil(roBlock.m_uil), m_uir(roBlock.m_uir) {} 
SBlock& operator^=(SBlock& b) { m_uil ^= b.m_uil; m_uir ^= b.m_uir; return *this; } 
unsigned int m_uil, m_uir; 
}; 

source complet est disponible ici: http://www.codeproject.com/KB/security/blowfish.aspx

Quelle est la meilleure façon de contourner ce problème? J'ai lu l'article sur l'utilisation du code C++ sur le site de développement d'Apple, mais cela n'a pas beaucoup aidé.

Répondre

6

Il est certainement possible et l'astuce est extrêmement simple : lorsque vous allez utiliser le code C++ dans votre Objective-C++ applications, nommez vos fichiers .mm au lieu de .m. Donc, si vous avez YourViewController.h et YourViewController.m, renommez ce dernier YourViewController.mm. Cela obligera XCODE à utiliser le compilateur C++ au lieu du compilateur C avec votre code Objective-C++.

YourViewController.mm:

- (void) yourMessage { 
    // will compile just fine and call the appropriate C++ constructor 
    SBlock sb(1,1); 
} 
+0

bien, j'ai essayé de renommer la classe cpp en mm. Cela soulevait toujours l'erreur dans le fichier .h. Cependant, je pense que vous essayez de dire que je devrais renommer le fichier qui inclut le code C++. Quand je pense à ça, ça a du sens à la fin. Je vais essayer et vous le faire savoir. Merci. –

3

il suffit de changer l'extension du nom de votre fichier .m à .mm et incluent les en-têtes C++. Wow, je tape trop lentement, lol.