2010-12-02 48 views
1

我想创建一个C++ so库并将其包含在我的Objective C代码中。我在XCode工作。 这里是C++代码:将静态C++库包含到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 
} 

所以我想创建所以将它包含在Obejctive C代码中。 如何包含或导入它? ..我想调用my_sort()函数?

谢谢!

回答

0

这里的麻烦是你的函数有外部C链接。因此它不能使用std::vector类型的参数,也不能使用throw声明,因为这些都是C++的东西。

要将它包含到您的目标C代码中,您必须编写随附的头文件,该头文件将声明您的导出函数。一旦你从界面中删除了对C++的所有引用,导出它就会容易得多。它也将避免包含C++头文件。然后,要从Objective C代码中使用它,#包括头文件,并将链接器信息提供给库。

+0

我已经完成了所有这些,但链接似乎在Xcode中的FUBAR。 “给链接器信息”实际上是什么意思,用Xcode? – Adam 2013-11-30 16:22:02

相关问题