2010-12-02 8 views
1

Je souhaite créer une bibliothèque C++ so et l'inclure dans mon code Objective C. Je travaille en XCode. Voici le code C++:Inclure la bibliothèque C++ statique dans le projet Objective C

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

Je veux créer la donc bibliothèque pour l'inclure dans le code Obejctive C. Comment l'inclure ou l'importer? .. Je veux appeler la fonction my_sort()?

THanks!

Répondre

0

Le problème ici est que votre fonction a une liaison C externe. Par conséquent, il ne peut pas utiliser les arguments de type std::vector, ni les déclarations throw car ce sont des éléments C++. Pour l'inclure dans votre code C objectif, vous devez écrire le fichier d'en-tête qui accompagnera la déclaration de votre fonction exportée. Il sera beaucoup plus facile de l'exporter une fois que vous aurez supprimé toutes les références à C++ depuis son interface. Cela évite également d'inclure les en-têtes C++. Ensuite, pour l'utiliser à partir de votre code Objective C, # incluez votre fichier d'en-tête et donnez les informations de l'éditeur de liens à votre bibliothèque.

+0

J'ai fait tout cela, mais le lien semble FUBAR dans Xcode. Que signifie réellement "donner les informations de l'éditeur de liens", avec Xcode? – Adam

Questions connexes