2012-07-25 16 views
5

He revisado un poco, pero la mayoría de las respuestas que he encontrado han sido o se sienten incompletas y me han dejado un poco confundido. Me han dado una biblioteca C que necesito compilar en una biblioteca estática usando XCode 4.3 y luego la uso en un proyecto de aplicación de iOS separado, pero no estoy seguro de cómo proceder. No estoy seguro de si las cuestiones estructura de directorios o no, pero aquí está de todos modos:XCode 4.3: Generación de biblioteca estática

Library -> Section1 -> src -> .c files 
        -> sec1 -> .h files 
        -> sec1.h 
     -> Section2 -> src -> .c files 
        -> sec2 -> .h files 
        -> sec2.h 

que he estado tratando de trabajar a partir de esto: http://blog.stormyprods.com/2008/11/using-static-libraries-with-iphone-sdk.html que estaba vinculado en una pregunta similar a éste a pesar de ser de 2008 está bastante desactualizado, ni podría hacerlo funcionar. También está esta pregunta: Including external C library with Xcode, pero no entra en los detalles de generar realmente la biblioteca, antes de incluirla en un proyecto separado.

Si alguien pudiera dar una respuesta clara y actualizada yo, y muchos otros, lo agradecería muchísimo, estoy seguro. ¡Avíseme si se necesita más información!

Respuesta

7

para construir la biblioteca estática:

  1. Crear un proyecto de biblioteca estática en Xcode
  2. añadir todos los .cy archivo .h al proyecto
  3. Compilar

La forma más fácil La forma de usar esta biblioteca es agregar este proyecto de biblioteca estática a su proyecto de aplicación. Esto evita tener que preocuparse por la creación de bibliotecas pesadas (es decir, bibliotecas con código tanto para el simulador como para el dispositivo).

Para añadir el proyecto de biblioteca estática para su proyecto de aplicación:

  1. Elija Archivo> Añadir archivos a "" ...
  2. Añadir la .xcodeproj para su biblioteca estática
  3. clic en sus aplicaciones de .xcodeproj en Project Navigator para mostrar opciones de compilación
  4. Haz clic en el objetivo de tu aplicación y selecciona la pestaña "Crear fases".
  5. Expandir el "Enlace con la sección Binarios"
  6. Haga clic en el botón '+'
  7. expanda la sección "Espacio de trabajo" (debería ver su biblioteca, un archivo .a, allí)
  8. Haga clic en la biblioteca y deberías ser bueno para ir.

Disculpas por el nivel de detalle insoportable anterior, pero de alguna manera la gente siempre parece olvidarse de hacer los pasos 4-8 y luego se preguntan por qué están recibiendo errores de enlace.

Xcode no podrá encontrar los encabezados de su biblioteca. Puede agregar los encabezados públicos a su proyecto como lo haría con cualquier otro archivo de encabezado o establecer las "Rutas de búsqueda de encabezado" en la configuración de compilación.

+1

Awesome gracias por la respuesta detallada! Me encuentro con una gran cantidad de errores, así que tal vez me perdí algo más, creé una Biblioteca Estática Cocoa Touch de iOS y agregué los archivos, corrigiendo los errores de referencia de los encabezados a medida que aparecían, ¿necesito cambiar el lenguaje de compilación a C? ¿en cualquier sitio? Estoy pensando que no solo lo sé, ¿verdad? –

+1

Xcode (o clang) elige por defecto el idioma según la extensión del archivo. P.ej. .c para C, .cc para C++, .m para ObjC y .mm para ObjC++. – Arne

+0

@KarolyS As Arne (+1) dice que no necesita hacer nada especial, siempre y cuando sus nombres de archivo terminen en .c, pero eso no significa que no tenga algo de trabajo por delante ... Todo depende de para qué plataforma se escribió el código original. Si se tratara de un sabor UNIX, no debería ser tan malo, si era Windows, podría ser más desafiante. Una cosa a tener en cuenta es '# define's que el código puede esperar determinar la plataforma (por ejemplo, POSIX). – idz

0

Pruebe el proyecto de Universal Framework, como se ve en github: https://github.com/kstenerud/iOS-Universal-Framework/. Lo he usado extensamente y funciona muy bien. Simplemente crea un nuevo proyecto de XCode para esa biblioteca, coloca todos los archivos de fuente y encabezado, y construirá un Framework estático. Que puede usar en otros proyectos, y tampoco tiene que preocuparse por las rutas de búsqueda del encabezado.

+0

Ya no funciona con iOS 8 – codesnooker

Cuestiones relacionadas