2012-03-25 32 views
9

我正在使用ZBar SDK構建一個iOS代碼掃描器項目。我試圖直接從ZBar的源代碼構建我的項目,而不是包含libzbar.a靜態庫。如何使用項目而不是使用靜態庫來構建ZBar SDK?

我已經下載了包含XCode項目以構建libzbar.a的ZBar源代碼。我試圖從項目中複製所有源文件,但沒有奏效。我一直在獲取未定義的符號錯誤。

考慮到我只需要支持iOS,應該包含哪些源文件?

是否應嚴格按照文件夾結構構建項目?

如果我直接包含源文件,是否需要構建設置?

編輯: 我遵循相同的文件夾結構和建立在libzbar的XCode項目中使用的設置。我已經設法建立了這個庫,但它在連接時仍然失敗。我得到了所有源文件的錯誤:ld: duplicate symbol _OBJC_METACLASS。我有雙重檢查,沒有對項目中原始libzbar.a靜態庫的引用或這些源文件的多次出現。如果我刪除了它們的引用,那麼項目就會正常生成,但是隻要引用了庫中的任何符號就會失敗。我想我仍然錯過了一些東西!

+0

zbar和是一個開源項目,僅作爲靜態庫分發,以便於集成,不需要因爲開發人員不希望人們看到源代碼。事實上,如果您瀏覽項目網站,下載源代碼的鏈接就在下載靜態庫的鏈接下方。 – Vin 2012-03-25 14:00:57

+0

你有什麼錯誤? – rakeshNS 2012-03-25 14:19:24

+0

@rakeshNS所有的錯誤都是缺少頭文件或未定義的符號。 – Vin 2012-03-25 17:29:01

回答

3

我終於解決了這個問題。以下是我所做的步驟:

1)將項目的源文件複製到我的項目中。

2)從我的項目中刪除了libzbar.a的依賴關係。

3)將該路徑添加到項目的Header Search Paths構建設置的包含源文件和標題的文件夾中。

4)增加了以下用戶定義的構建設置到項目:

EXCLUDE_SOURCE_FILE_NAMES
GCC_MODEL_TUNING
預綁定
USE_HEADERMAP

+0

你從哪裏下載源代碼?我需要包括哪些類? – Dejell 2013-03-20 20:08:17

+0

@Odelya源代碼可在http://sourceforge.net/projects/zbar/ .I中包含源代碼中的所有類。 – Vin 2013-03-21 06:00:34

0

您應該從源代碼創建自己的靜態庫,然後將輸出靜態庫添加到您的項目中,或將項目鏈接在一起並在構建項目之前強制構建靜態庫。

從默認的Mercurial庫下載的zip文件,並打開在Xcode的文件,點擊目標選擇的「EmbedReader」部分下拉框,並切換到「zBarSDK」

當你切換到後zBarSDK,只是建立從產品菜單,你應該有你的靜態庫文件....

+0

感謝您的回答Lefteris,但這一部分是非常明顯的。我計劃在代碼中做一些重大更改,並希望將來其他開發人員可以輕鬆維護代碼。如果需要,直接在項目中更改代碼對於我來說似乎是一個更好的選擇,而不是打開一個單獨的項目,進行更改,編譯一個庫,然後再次包括在主項目中。 – Vin 2012-03-25 17:28:31

-1

我以前使用ZXing lib,它很好地集成。它被包含爲一個項目,並且主項目具有目標依賴性以在主項目之前構建它。我編輯它的來源是爲了我的需要,並且沒有任何問題。我使用tutorial。它也可以幫助您滿足您的需求。

+0

感謝您的回答Alivig,但不知何故zxing不適合我的要求。我只能使用zbar。 – Vin 2012-03-29 12:20:12

相關問題