2017-03-19 80 views
2

所以我之前有過一些問題,但我刪除了我的舊問題並更新到了這個。這裏是:Xcode沒有找到C++靜態庫

我想在我的iOS Swift項目中使用C++庫。在這個社區的幫助下,我將我的庫編譯爲一個靜態庫(.a文件)。現在,我創建了一個新的項目,以測試這一點,我做只有下列步驟:

1.創建新雨燕項目

2.構建階段 - >鏈接二元文庫添加我的圖書館(like so

3.添加新的C++文件沒有一個頭文件和添加橋接報有如下內容:

//Wrapper.cpp

extern "C" void test() 
{ 
    //Just to test the swift - c++ connection later this file 
    //shall import the main header of the library. 
} 

// CAS測試-Bridging-Header.h

void test(); 

但現在,當我編譯時,我得到了this error(你也可以在左邊看到我的項目層次結構)。

感謝您提前提供的所有幫助!

回答

1

爲了讓Xcode中找到你至少有兩個選項庫:

  1. 設置庫搜索路徑下生成設置。這可能很麻煩,因爲你必須確保爲正確的架構構建庫,例如模擬器或實際設備,並使用適當的路徑。

  2. 創建一個新的工作區,將庫項目和應用程序項目添加到工作區。在應用程序目標的構建階段中,在單擊「鏈接二進制庫」部分中的「+」符號後,在彈出的對話框中選擇靜態庫(.a)文件。 Xcode將爲正確的架構構建庫,並將應用程序與正確的靜態庫鏈接起來。

現在,無論您選擇上面的選項1還是選項2,構建正確架構的庫可能會非常棘手。有幾件事情嘗試:

  • 在Xcode中創建一個外部構建系統項目,並使用與庫源傳來的makefile 。 (文件 - >新建 - >項目... - > 跨平臺。)
  • 在Xcode中創建一個Cocoa Touch靜態庫項目。 (文件 - > 新建 - >項目... - > iOS。)您需要將庫源 添加到項目中。這可能是你最好的選擇,如果 庫的構建不太複雜。

也可以選擇將C++庫源直接包含到Swift項目中。

看看這篇文章是否有用:Compiling external C++ library for use with iOS project

+1

看着你的其他問題和你得到的答案,我懷疑一旦你修復了庫搜索路徑,你可能會看到一些未定義的符號錯誤。如果您爲與您正在構建iOS應用的架構不匹配的架構構建靜態庫,則會發生這種情況。 – OmniProg

+0

感謝您的回答!我沒有測試它的噴氣式飛機,但我會立即。關於您的評論:我該如何解決這個問題?我使用OS X命令行構建了該庫。使用Xcode構建庫會解決這個問題嗎? – Jony

+0

哦,我的壞!再讀一遍你的第二點!我知道要求很多,但你能澄清我的第二點要做什麼嗎?非常感謝你=) – Jony