2013-04-06 44 views
5

我想將最新版本的OpenCV包含到現有的iOS項目中,並且因爲我的XCode項目設置爲使用libstdC++而不是libC++/C++ 11支持,因此存在鏈接器錯誤。用於iOS的OpenCV 2.4.3+和libstdC++?

我見過其他幾位通過啓用libC++修復錯誤的人。例子:

不過,我需要使用的libstdC++,因爲我有一個已經與老STDLIB編譯其他第三方庫(不能改變)。如果沒有-stdlib = libC++,有沒有辦法編譯OpenCV 2.4.3+?是否有特殊的標誌傳遞給CMake?或OpenCV源代碼的ios文件夾中的build_framework.py腳本?

另外,沒有人有二進制版本可用?似乎所有可從OpenCV下載的文件都假定爲libC++/C++ 11。

回答

10

在源OpenCV的找到此文件:

ios/cmake/Modules/Platform/iOS.cmake 

改變這一行:

set (CMAKE_CXX_FLAGS "-stdlib=libc++ -headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden") 

到:

set (CMAKE_CXX_FLAGS "-stdlib=libstdc++ -headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden") 

編譯使用python腳本

ios/build_framework.py 

那麼你應該去的好

我剛纔想這對2.4.3源,換入現有項目產生的框架,改變了該項目的libstdC++和運行良好的C++標準庫。

+0

是的!這是一個非常簡單的解決方案。謝謝。 – mikewoz 2013-04-07 22:59:58

1

我也在使用OpenCV和需要libstdC++的第三方庫進行項目工作。

當我剛碰到這個問題時,我想分享一下對我有用的東西。


我能夠通過在我的項目中添加「libC++。dylib」來獲得OpenCV的工作。

構建階段 - > 「鏈接二進制與圖書館」 - > 「+」 - >的libC++ dylib

僅供參考,我使用的OpenCV 2.4.9(OpenCV的-2.4.9)從opencv.org。我按照OpenCV文檔中的說明使用ios平臺build_framework.py編譯它。不需要修改。