2013-10-23 132 views
5

使用我現在要移植的C++代碼到iOS,試圖建立由原始的C++代碼靜態庫,並加載在iOS庫。由於原始代碼很重,我開始一個小測試來驗證我的步驟是否可行。如何建立圖書館用C++編寫,並在iOS版

首先,我需要構建庫(.a),它打印一些字符串。我編譯下面的代碼,並生成一個庫(.a)中的文件

//talk.h 
... 
#include <iostream> 
class Talk { 
    Talk(); 
    void printHello(); 
    void printWord(char*); 
}; 


//talk.cpp 
#include "talk.h" 
using namespace std; 
void Talk::printHello() { 
    cout << "Hello World"; 
} 
void Talk::printWord(char* word) { 
    cout << "Hello" << word; 
} 

第二步我嘗試做的是開放的iOS應用一個新的項目,然後設置鏈接庫文件,也包括相應的「談話.h「頭文件。 但是,即使我成功構建庫,頭文件上也會發生一些錯誤。

的錯誤表明

  1. 「的iostream」 找不到文件
  2. 「未知類型名稱 '階級';?你的意思是 '類'
  3. 任何其他錯誤...

我已經嘗試將controller.m重命名爲controller.mm,但它沒有解決問題

如何導入頭文件f在iOS上使用庫編寫C++嗎? 由於

回答

0

對於第一部分C++編譯以及在Xcode 我已經寫一個簡單的教程 http://tutorialsios.blogspot.com/2013/09/c-beginers-code-for-objective-c.html 這些代碼中使用的Xcode進行編寫和編譯在終端

#include "functionOverLoading.h" 
int main(int argc, const char * argv[]) { 
.. 
.. 
     return 0; 
    } 

$克++ functionOverLoading.cpp - o functionOverLoading

$ ./functionOverLoading

+0

但我想要的是從C++代碼構建一個庫,然後使用iOS上的庫,它需要加載庫並在iOS項目中包含開放接口頭。不能在Xcode中運行普通的C++代碼 –

0

您需要添加C++標準庫。

爲此,請在您的項目中找到其他鏈接器標誌並添加-lstdc++

+0

如何添加?以及在哪裏添加? –

2

一個大致的輪廓:

在Xcode中(從模板的iOS應用程序項目的任何一個(或現有的):

  • 創建一個新的靜態庫的目標文件 - >新建 - >目標....選擇框架或庫,然後可可觸摸靜態庫
  • 添加庫源代碼:將庫源代碼拖放到Xcode項目中。在出現的對話框中,選擇上面創建的構建目標。
  • 將項目依賴項添加到庫中:從項目導航中選擇項目,即項目導航中的iOS構建目標。選擇構建階段選項卡,然後根據目標依賴項在窗口中,點擊+標誌。一張表打開(選擇項目添加),圖書館的目標應該在列表的頂部。
  • 在iOS中包含庫目標:在鏈接二進制文件與庫,請單擊+。庫(a .a文件)應該位於列表的頂部。
  • 鏈接libC++:作爲上述步驟。從列表中選擇libC++
  • 啓用目標C++編譯爲需要通過從.M改變擴展.mm
  • 構建iPhone應用程序對象以包括庫頭任何源代碼文件。

Xcode將負責爲您設置一切,包括編譯器標誌和頭部搜索路徑。