2010-12-09 8 views
3

Wie ich hörte, ist es möglich, C++ Code innerhalb eines iPhone (Objective C) Projekts zu verwenden, möchte ich eine Verschlüsselungsbibliothek verwenden, die in C++ geschrieben ist. Die Bibliothek verwendet jedoch eine C++ - Typ-Struktur, die einen Konstruktor verwendet, den ich nicht richtig bekommen kann.Verwendung von C++ - Struktur mit iPhone App

Das Struct sieht wie folgt aus:

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; 
}; 

volle Quelle ist hier verfügbar: http://www.codeproject.com/KB/security/blowfish.aspx

was der einfachste Weg ist um diese Frage zu bekommen? Ich habe den Artikel über die Verwendung von C++ - Code auf der Entwickler-Website von Apple gelesen, aber das hat nicht viel geholfen.

Antwort

6

Es ist definitiv möglich und der Trick ist, extrem einfach: Wenn Sie gehen, C++ Code in Objective-C++ Anwendungen verwenden, benennen Sie Ihre Dateien .mm statt .m.

Wenn Sie also YourViewController.h und YourViewController.m haben, benennen Sie die letzte Adresse in YourViewController.mm um. Es bewirkt, dass XCODE den C++ - Compiler anstelle des C-Compilers mit Ihrem Objective-C++ - Code verwendet.

YourViewController.mm:

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

Nun, ich habe versucht, die cpp-Klasse in mm umzubenennen. Das brachte den Fehler in der H-Datei immer noch auf. Wie auch immer, ich denke, Sie versuchen zu sagen, dass ich die Datei umbenennen sollte, die den C++ Code enthält. Wenn ich darüber nachdenke, ergibt das am Ende Sinn. Will es versuchen und dich wissen lassen. Vielen Dank. –

3

einfach die Erweiterung Ihrer .m-Datei Dateinamen ändern .MM und schließen die C++ Header. Wow, ich tippe zu langsam, lol.

Verwandte Themen