xcode frameworks

Bundle framework con aplicación en XCode



frameworks (3)

Soy un novato de XCode. Estoy tratando de seguir estas instrucciones . Claramente me falta algo porque, aunque puedo ver que el marco que quiero se ha copiado en el paquete de la aplicación, no puedo hacer referencia a él.

Cuando inicio la aplicación desde una máquina que no es la mía (o si quito OpenCV de / Library / Frameworks /) obtengo el siguiente error:

Mensaje de error de Dyld: Biblioteca no cargada: /Users/david/Library/Frameworks/OpenCV.framework/Versions/A/OpenCV Referenciada: /Users/g/Demo/Slates/ClipSplitter/build/Release/ClipSplitter.app/Contents/ Motivo de MacOS / ClipSplitter: imagen no encontrada

No hay ningún usuario "david" en mi sistema si eso hace alguna diferencia. También se trata de un OpenCV preinstalado descargado de Internet. ( Aquí hay una captura de pantalla del proyecto como se solicita en los comentarios).


Con Xcode 5, puede facilitar esto utilizando el panel Build Phases del objetivo de su aplicación.

El aspecto predeterminado de este panel es

Al presionar el botón "+" debajo de Copiar archivos , puede agregar su marco como un archivo que se copiará a los marcos en su paquete de aplicaciones.

Ahora, cuando construyas, tu (s) marco (s) se copiarán en tu paquete.



Cuando se construyó el OpenCV.framework, se configuró para usar una ruta de instalación de /Users/david/Library/Frameworks/ .

Dado que desea utilizar la biblioteca como un marco privado (instalado en el contenedor de la aplicación en ClipSplitter.app/Contents/Frameworks/OpenCV.framework ) debe cambiar su ruta de instalación. Esto se puede hacer fácilmente usando el terminal de la siguiente manera:

$ install_name_tool -id @executable_path/../Frameworks/OpenCV.framework/OpenCV <your_path>/OpenCV.framework/OpenCV

Por supuesto que tienes que ajustar la ruta del último argumento.

Ahora, al vincular su aplicación, su marco modificado le dice al vinculador que dyld tiene que buscar el OpenCV.framework en el envoltorio de la aplicación de su aplicación (en el directorio ClipSplitter.app/Contents/Frameworks).

Ahora tiene que copiar el OpenCV.framework en el contenedor de su aplicación. Puede hacer esto como parte de su proceso de compilación agregando una fase de compilación de archivos de copia: Haga clic derecho en su objetivo, seleccione Agregar-> Nueva fase de compilación-> Nueva fase de compilación de archivos de copia. Seleccione "Marcos" en la ventana emergente "Destino" y cierre el cuadro de diálogo.

Su objetivo ahora contendrá una nueva fase a la que puede agregar OpenCV.framework arrastrando el icono desde el Project Navigator en el lado izquierdo de la ventana de Xcode. Tenga en cuenta que Xcode no le permitirá agregar una carpeta a la fase de Copiar archivos utilizando el botón ''+'', por lo que para copiar el marco tendrá que arrastrarlo y soltarlo.