OpenCV.Framework no comstack para la architecture armv7s

Estoy trabajando en una aplicación para iPhone usando openCV framework. Todo estaba funcionando bien. sin embargo, últimamente, con el lanzamiento de iOS 6 y XCode 4.5, estaba migrando mi proyecto a XCode 4.5. Al build, encontré este error:

ld: el file es universal (2 cortes) pero no contiene un (s) rebanada de armv7s: /Users/jobs/iPhone_Client/workspace/MyProject/third-party/OpenCV.framework/OpenCV para la architecture armv7s clang: Error: error del command del vinculador con el código de salida 1 (use -v para ver la invocación)

** CONSTRUCCIÓN FALLIDA **

Los siguientes commands de compilation fallaron: Ld build / MyProject.build / Debug-iphoneos / MyProject.build / Objects-normal / armv7s / MyProject normal armv7s (1 falla)

Como entendí, esto se debe a la nueva architecture de armv7s . OpenCV aparentemente no está comstackndo con armv7s.

¿Cómo puedo solucionar este problema?

¿Dónde puedo encontrar una nueva versión del framework que sea compatible con la architecture armv7s?

Y si no hay un marco compatible disponible, ¿hay alguna forma de get el código fuente y crear mi propia biblioteca comstackda contra la nueva architecture? ¿Tal vez algunos pasos rápidos sobre cómo hacerlo?

Nota: Solo para notar que necesito la compilation para armv7s no armv7 . Gracias

Esta respuesta se basa en la dada por n9986. Como sugirió, cloné el repository encontrado en

https://github.com/jonmarimba/OpenCV-iOS

Cuando lo descargué varias references dentro del proyecto a diferentes bibliotecas se rompieron lo que era extraño pero eran fáciles de solucionar. Después de que se resolvieron, se comportó exactamente como se describe en n9986, y se publicaron bibliotecas comstackdas tanto para armv7 como para armv7s. Para mis propósitos, sin embargo, exigí que se incluyeran en un marco para que pudieran ser un reemploop en reemploop del antiguo marco que he estado usando.

Anteriormente había descargado la última versión de Opencv for ios aquí y pasé bastante time tratando de modificar sus files cmake para comstackr con soporte para armv7s. jonmarimba ya ha reestructurado el file de proyecto xcode para eliminar sus dependencies cmake lo que hace que cambiar la architecture de destino sea mucho más intuitivo. Desafortunadamente, no construye tantas bibliotecas como vienen con la compilation openCV estándar. Agregué un nuevo objective al proyecto de jonmarimba para opencv_world, que es el objective utilizado en la versión openCV estándar para convertir en un marco. Una vez que se creó, lo utilicé como una sustitución en reemploop de la biblioteca estática en la estructura de files de estructura generada por la versión estándar openCV.

El marco que creé se puede download aquí . Funciona perfectamente para mí como reemploop de mi anterior opencv2.framework. Sin embargo, noté que jonmarimba no ha convertido los objectives para opencv_videostab, opencv_stitching u opencv_nonfree. Es posible que si usa una de esas bibliotecas mi marco no funcionará para usted. Si ese es el caso, avíseme y puedo tratar de establecerlos como objectives en el proyecto xcode para usted.

Actualizar

Para comstackr para otras architectures, cambie la architecture de destino en el proyecto xcode incluido a lo que desee para la biblioteca opencv_world. Después de que lo construyas, ve a search la biblioteca que acabas de build. Cambie el nombre de la biblioteca opencv_world a opencv2 y reemplace el file de la biblioteca que se encuentra en .framework con opencv_world.

Actualización2

OpenCV 2.4.3 ahora se comstack con el soporte de armv7s de forma pnetworkingeterminada, por lo que estas soluciones están desactualizadas.

Clonar el proyecto Xcode para opencv y actualizar el submodule opencv git según el README:

https://github.com/jonmarimba/OpenCV-iOS

Compruebe la configuration de compilation, asegúrese de que iOS6 y armv7s estén presentes. Haga clic en comstackr Ahora debería tener los files .a compatibles con armv7s. Acabo de intentar esto:

$ file libopencv_core.a libopencv_core.a: Mach-O universal binary with 2 architectures libopencv_core.a (for architecture armv7): current ar archive random library libopencv_core.a (for architecture cputype (12) cpusubtype (11)): current ar archive random library 

La última input es para armv7s según mi investigación hasta el momento.

Editar: la última input es, de hecho, armv7s. Ejecuté el command de información de lipo propio de Xcode:

 $ xcrun -sdk iphoneos lipo -info libopencv_core.a Architectures in the fat file: libopencv_core.a are: armv7 armv7s 

Siempre puedes simplemente no apuntar armv7s, y solo apuntar armv7. Su aplicación seguirá funcionando bien en el iPhone 5, simplemente no estará completamente optimizada para el nuevo set de instrucciones.

Simplemente, cloné fuente desde aquí y comstackr con este tutorial .

Luego obtuve opencv2.framewok que funciona con armv7, armv7s y simulador.

Explicando lo obvio, necesitará recomstackr y rebuild la biblioteca openCV.framework y apuntar para armv7s.

Ajuste la biblioteca "configuration del proyecto" y "configuration de destino" antes de rebuild. ¡buena suerte!

Probablemente sea posible buildlo con CMake. Hace un año tuve un problema con una biblioteca médica que quería build para iOS. Podría manejar eso con CMake.

Tal vez este enlace puede ser un iniciador.

http://computer-vision-talks.com/2010/12/building-opencv-for-ios/

¡Buena suerte!

Pase -DCMAKE_OSX_ARCHITECTURES="armv6;armv7;armv7s;i386" para comstackr al comstackr la biblioteca / marco OpenCV para iOS.