iphone cocoa xcode dyld

¿Cómo agrego un proyecto de Framework to iPhone de un tercero?



cocoa xcode (3)

iPhone no es compatible con la vinculación dinámica de marcos incorporados. Si bien es posible que pueda hacer que el simulador funcione, no funcionará en el dispositivo. Si desea usar el código, debe compilar la biblioteca estática para el marco (libpldatabase.a) y luego vincularlos a la aplicación.

La GUI de Xcode no proporciona una interfaz agradable para enlaces estáticos, necesitará agregar indicadores apropiados en sus preferencias de compilación (-lpldatabase -L / whatever / dir / it / is / in).

Estoy tratando de usar el marco PLDatabase en mi aplicación de iPhone. He agregado el marco a mi proyecto de Xcode. Sin embargo, cuando ejecuto mi aplicación, se bloquea con el siguiente error:

dyld: Library not loaded: @loader_path/../Frameworks/PlausibleDatabase.framework/Versions/A/PlausibleDatabase Referenced from: /Users/todd/Library/Application Support/iPhone Simulator/User/Applications/BB3C66B2-A5BB-4329-B163-AB0072411AF1/Congress.app/Congress Reason: image not found

No estoy seguro de dónde se encuentra el Framework para que se encuentre en el disco.

Gracias


RE @mipadi: ZeroLink fue eliminado en Xcode 3.1 y no existe para el iPhone SDK. La respuesta correcta es Louis ''; el iPhone no admite marcos cargados dinámicamente en aplicaciones creadas por desarrolladores.

Xcode tiene una buena interfaz de usuario para bibliotecas estáticas; simplemente arrástralos al proyecto y se agregarán a la fase de enlace. No hay necesidad de preocuparse por las banderas del enlazador. El problema surge cuando necesitas usar los encabezados suministrados con esas librerías estáticas (luego necesitas agregar las rutas de búsqueda de encabezado manualmente) o cuando una lib está en conflicto con un dylib disponible (es cuando tienes que agregar la bandera -l manualmente) .


En realidad, no es estrictamente cierto que el iPhone no admite enlaces dinámicos. Lo que es cierto es que las aplicaciones instaladas por la App Store no pueden enlazarse dinámicamente.

La tienda de aplicaciones / ituned instala programas en el directorio / private / var / mobile / ... Cualquier programa abierto que viva en ese subdirectorio está cerrado y tiene ciertos derechos eliminados cuando se abre. Los procesos chroot no pueden bifurcarse, no pueden ejecutarse en segundo plano, no pueden cargar bibliotecas dinámicas y no pueden guardar archivos fuera de sus pequeñas áreas protegidas del disco (con la excepción de las fotos en el directorio de fotos). )

Dicho esto, el iPhone tiene un sistema operativo moderno que admite enlaces dinámicos sin problemas. El acto de ''jailbreaking'' es en realidad instalar un programa fuera de la cárcel chroot que luego puede hacer cosas como tenedor y guardar archivos en otros lugares en el disco y cargar el código dinámico.

Apple (y la comunidad abierta de iPhone) tiene una gran cantidad de programas que se ejecutan en el teléfono (como las aplicaciones MobilePhone, Mobile Safari y SpringBoard) que se pueden ejecutar en segundo plano y cargar bibliotecas. Se colocan en un lugar diferente en el disco (/ private / var / stash / Applications a menudo).

Entonces ... si quiere vender su aplicación en la tienda de aplicaciones, no puede cargar una biblioteca dinámica. Que para la mayoría de las personas significa que no puedes cargarlo en absoluto. Pero si desea distribuir su aplicación a través de Cydia (un instalador de aplicación de teléfono jailbroken común), entonces puede salirse con la suya jailbreak el teléfono y cargar su biblioteca dynaamic. De hecho, debido a que el proceso de instalación de itunes es el culpable, como has aprendido, ni siquiera puedes cargar un dylib desde tu propia aplicación que escribes en tu propio teléfono ... a menos que tengas un jailbreak.