簡體   English   中英

將靜態C ++庫包含到Objective C項目中

[英]Include static C++ library to Objective C project

我想創建一個C ++ so庫並將其包含在我的Objective C代碼中。 我在XCode中工作。 這是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 
}

因此,我想創建一個so庫,以便將其包含在Obejctive C代碼中。 如何包含或導入它? ..我想調用my_sort()函數嗎?

謝謝 !

這里的問題是您的函數具有外部C鏈接。 因此,它不能使用std::vector類型的參數,也不能throw聲明,因為它們是C ++的東西。

要將其包含在目標C代碼中,必須編寫隨附的頭文件,該文件將聲明導出的函數。 一旦從其接口中刪除了對C ++的所有引用,將其導出將更加容易。 它還將避免需要包含C ++頭文件。

然后,要從您的Objective C代碼中使用它,請#include您的頭文件,並將鏈接器信息提供給您的庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM