2010-12-02 9 views
1

Ich möchte eine C++ - Bibliothek erstellen und in meinem Objective-C-Code enthalten. Ich arbeite in XCode. Hier ist C++ Code:Include statische C++ - Bibliothek zu Objective C-Projekt

-------------- core.cpp ----------

#include <vector> 
#include <algorithm> 

extern "C" void my_sort(std::vector<int>& a) throw() 
{ 
sort(a.begin(), a.end()); // this is std::vector's sort function 
} 

Deshalb möchte ich das schaffen So Bibliothek für die Aufnahme in den Obejctive C-Code. Wie man es aufnimmt oder importiert? .. Ich möchte my_sort() Funktion aufrufen?

Vielen Dank!

Antwort

0

Das Problem hier ist, dass Ihre Funktion externe C-Verknüpfung hat. Daher kann es keine Argumente vom Typ std::vector verwenden, auch keine throw Deklarationen, da es sich um C++ - Zeug handelt.

Um es in Ihren objektiven C-Code aufzunehmen, müssen Sie die zugehörige Header-Datei schreiben, die Ihre exportierte Funktion deklariert. Es wird viel einfacher sein, es zu exportieren, sobald Sie alle Verweise auf C++ von seiner Schnittstelle entfernt haben. Es wird auch vermieden, die C++ - Header aufzunehmen.

Dann, um es von Ihrem Objective C-Code zu verwenden, #include Ihre Header-Datei, und geben Sie die Linker-Informationen zu Ihrer Bibliothek.

+0

Ich habe all dies getan, aber die Verknüpfung scheint FUBAR in Xcode. Was bedeutet "Linker-Information" eigentlich mit Xcode? – Adam

Verwandte Themen