的Xcode 4.6,iOS版SDK 6.1,正方體-OCR 3.02
自上OpenCV的版本使用的libC++建成,正方體-OCR使用的libstdC++建成,他們能夠」在一個xcode項目中一起使用。
所以,我試圖用libC++構建tesseract。使用腳本here(將基本sdk和部署目標更新到6.1),tesseract正在構建得很好,一旦將C++標準庫設置爲編譯器默認值,就可以在我的xcode項目中運行。根據回答here,我嘗試改變腳本以使用libC++構建它。我改變CXX指向鐺++,並加入-stdlib = libc的++到CXXFLAGS。
結果是腳本成功,圖書館都建,但選擇的libC++作爲在Xcode C++標準庫時,我得到了很多的鏈接錯誤和項目生成失敗。當標準庫設置爲編譯器默認值時(如同定期創建時),新庫仍然可以工作。
我錯過了什麼?的Tesseract-OCR 3.02用的libC++
3
A
回答
3
好了,我的問題是,在我的項目中添加和刪除引用到圖書館了幾次後,我在我的庫搜索路徑相當混亂。此外,我沒有將新的「包含」文件夾(在構建tesseract時創建)添加到用戶標題搜索路徑。
所以,只是一個快速回顧一下,爲了使用的libC++,建立正方體,OCR,因此它可以隨着新的OpenCV的版本工作:
- 下載leptonica-1.69
- 下載正方體3.02
- 排列它們在文件夾結構在原來的教程解釋here
- 下載this腳本到同一文件夾。
- 編輯相關IOS_BASE_SDK和IOS_DEPLOY_TGT的腳本。
- 編輯CXX使用鐺++:CXX = 「在/ usr/bin中/鐺++」
- 編輯CXXFLAGS使用的libC++的標準庫:CXXFLAGS = 「$ CFLAGS -stdlib =的libC++」
- 使用腳本和構建tesseract和leptonica。
- 添加這些庫與您xcode項目,改變「C++標準庫」設置爲在libC++。
- 確保您的「庫搜索路徑」設置不指向任何舊的正方體庫。
- 確保您的「用戶頭搜索路徑」設置指向新的「包括」文件夾中創建,當你建立了新庫。
- 現在,當您嘗試構建項目時,您將會遇到一些缺失的頭文件。只需將它們從tesseract和leptonica舊的「包含」文件夾複製即可。
就是這樣。此時,您將有一個項目能夠同時使用新的OpenCV版本和tesseract 3.02。如果它是一個新項目,不要忘記根據__cplusplus編輯前綴文件以包含OpenCV和Tesseract,並使用它們重命名任何.m文件。毫米
非常感謝this的答案,這讓我很好的在路上。
2
Tsseract-OCR-iOS已更新以處理此問題(與libC++編譯的項目(例如OpenCV)在同一項目中工作)。安裝時,不要忘記這些步驟:
如果您正在使用iOS7或以上,鏈接的libstdC++ 6.0.9.dylib庫(你的目標=>常規=>鏈接的框架和庫=> + => libstdC++。6.0.9)
轉到您的項目,單擊該項目並在Build Settings選項卡中將-lstdC++添加到所有「Other Linker標誌」鍵。 *轉到您的項目設置,並確保C++標準庫=>編譯器默認值。 (感謝https://github.com/trein)
從項目根目錄下的Template Framework Project複製並導入tessdata文件夾。它包含「tessdata」文件。你可以在這裏添加更多的tessdata文件。
*爲了讓OpenCV編譯,我必須將C++標準庫設置爲「libC++」。
相關問題
- 1. 在Laravel中使用TesseractOCR
- 2. Tesseract 3.02 for iOS?
- 3. 如何使用OCR(TesseractOCR)php庫
- 4. 與libc-dbg和libc-prof的鏈接
- 5. XAMPP 1.8中的Joomla 2.53和Joomla 3.02
- 6. 鏈接只有libc中,並++沒有的libC++用C
- 7. 如何使用在新的Facebook SDK的方法「openWithImportedAccessToken」爲Android 3.02
- 8. 使用配置文件的Tesseract 3.02的角色信心
- 9. autoconf中的libc宏
- 10. 如何在OpenShift中安裝TesseractOCR?
- 11. 使用g ++與libC++
- 12. PHP TesseractOCR只能在命令行工作
- 13. 如何在C#中使用tesseract 3.02訓練過的數據?
- 14. 在python中使用tesseract 3.02與ctypes和cv2的C API
- 15. LLVM中的libC++和libC++ abi庫有什麼區別?
- 16. 適用於iOS和libC++的Google Maps SDK
- 17. python ctypes從Linux上的libc調用reboot()
- 18. 在libc中的應用程序崩潰
- 19. 如何使用更新版本的libc?
- 20. libpthread和libc中的未定義引用
- 21. libC++,Windows上的Clang和LLVM
- 22. libc中的字符編碼?
- 23. Libc的靜態鏈接
- 24. NetBSD上的Clang和-std = libC++?
- 25. 重建Android的部分(libc)
- 26. 在Windows上使用libC++?
- 27. 從JNA調用libc函數
- 28. Android,FaceDetection,LibC
- 29. 連接器命令退出碼1失敗使用TesseractOCR
- 30. 沒有libc編譯
什麼是第一個鏈接錯誤? – 2013-05-02 15:11:13
感謝您的回覆。 「架構armv7s的未定義符號」以及大量來自整個庫的「std :: ....」。我的有效體系結構是爲armv7和armv7s設置的,「Build Active Architecture Only」設置爲「No」。 – 2013-05-03 20:03:16
小小更新:IOS_DEPLOY_TGFT與我在xcode項目中使用的不同。糾正它仍然會產生相同的錯誤,但現在它是「armv7」而不是「armv7s」。我似乎無法弄清楚這一點。 – 2013-05-05 11:00:38