2012-03-25 10 views
8

he hecho lo siguiente hasta el momento:Cómo enlazar a coco2d biblioteca estática (1.1 beta 2) el uso de los espacios de trabajo en Xcode 4.3.1

  1. Creado espacio de trabajo
  2. Añadido mi proyecto
  3. Agregado el Cocos2d Proyecto de iOS (arrastrando dropping al navegador del proyecto). Es un hermano de mi proyecto (no un niño).
  4. En mi proyecto, en fase de construcción, vinculados a libcocos2d.a
  5. En configuración de generación de mi proyecto - Establecer siempre rutas a buscar SÍ
  6. árbol de fuentes Creado variable apuntando a la carpeta que contiene el IOS Cocos2d xcodeproj archivo.
  7. En las rutas de los encabezados de usuario de mi proyecto, se agregó una variable de árbol fuente desde el paso 6. Establecer como recursivo. 8.En el navegador del proyecto, haga clic en la biblioteca libcocos2d.a (aparece en rojo). Establezca la ubicación "Relativo a los productos de construcción". Establece esto en la ventana de la derecha de Xcode 4.3.1.
  8. Espacio de trabajo cerrado y archivo pbxproj abierto en TextWrangler. Se buscó la ruta que contiene libcocos2d.a Eliminar ruta, por lo que la entrada solo dice "libcocos2d.a". Esto se debe a que, después de compilar, la biblioteca está en el mismo directorio de compilación de la aplicación.

Codesense y trabajo de autocompletado. Pero esto no compilará. Alrededor de 70 errores de enlace aparecen cuando intento para construir, todos diciendo algo como:

símbolos no definidos para la arquitectura ARMv7: "_OBJC_CLASS _ $ _ CCDirector", se hace referencia a partir de: clase objc-ref en AppDelegate.o objc- clase-ref en ViewController.o "_kEAGLColorFormatRGB565", hace referencia a partir de: - [RIAppDelegate applicationDidFinishLaunching:] en AppDelegate.o "_OBJC_CLASS _ $ _ CCTexture2D", referenciado desde: clase objc-ref en AppDelegate.o "_OBJC_CLASS_ $ _EAGLView ", a la que se hace referencia en: objc-class-ref en AppDelegate.o

Si intento construir para el simulador, en lugar de armv7, dice que los símbolos faltan para i386. El proyecto cocos2d en sí mismo compila & crea bien. Es mi proyecto el que tiene los errores anteriores.

La biblioteca cocos2d está presente en el directorio de compilación de mi aplicación después de intentar compilarla.

EDITAR: Se olvidó de mencionar. También edité el esquema para que mi proyecto no se construya en paralelo. También agregué el objetivo cocos2d y lo puse en la parte superior de la lista (por lo tanto, debe compilarlo primero).

EDITAR: para aclarar: después de realizar los cambios en el archivo pbxproj como se detalla anteriormente, el archivo libcocos2d.a ya no está rojo. Se ve normal. También mi aplicación también está construida, a pesar de que hay errores de enlace y falla la compilación. (No se compila en realidad, pero el producto no es "rojo". Se crea un archivo de aplicación en la misma ubicación donde se produce la biblioteca cocos2d.

+0

A menos que realmente necesite hacer esto usted mismo, debería considerar usar Kobold2D (http://www.kobold2d.com). Cocos2D ya está configurado como una biblioteca estática, al igual que todas las demás bibliotecas, y ARC también está habilitado. No necesita preocuparse por * ninguna * de estas cosas técnicas de nuevo. Simplemente instale y comience a trabajar en su proyecto. – LearnCocos2D

+0

Gracias Steffen, pero no estoy interesado en usar Kobol2D. –

Respuesta

11

He intentado por un tiempo usar Cocos2d como una biblioteca estática, en lugar de una plantilla. La razón es que hace que sea más fácil desarrollar mi proyecto de forma modular. Además, hace que sea más fácil cambiar entre versiones de Cocos2d, etc. Después de buscar en los foros cocos2d-x encontré este enlace: http://cfc.kizzx2.com/index.php/cocos2d-x-with-xcode-4-from-scratch-without-template/

Descubrí los marcos que necesitaba agregar, y eso resolvió todos los problemas de enlace.

Todavía no he enviado una aplicación a la tienda, por lo que si alguien con más experiencia pudiera revisarla para ver si hay errores/errores, sería genial. El inglés es un segundo idioma para mí, así que no te preocupes. Esto se hizo utilizando cocos2d1.1beta2 y Xcode 4.3.1

  1. Crear un espacio de trabajo Xcode
  2. Vaya a la carpeta que contiene el archivo cocos2d xcodeproj (iOS/Mac). Aquí es donde descomprimiste cocos2d después de descargarlo.
  3. Arrastre y suelte el archivo xcodeproj en la ventana del navegador de Xcode. (La ventana más a la izquierda).
  4. Haga clic en el pequeño triángulo cerca del archivo de proyecto cocos2d para que desaparezca todo su contenido.
  5. Agregue un nuevo proyecto a su espacio de trabajo haciendo clic derecho en el navegador y "Nuevo proyecto". Asegúrese de que el proyecto se agregue como un hermano al proyecto cocos2d, y no como un niño. Elegí aplicación de ventana única (IOS)
  6. En este nuevo proyecto, vaya a la configuración de generación, y el cambio "Siempre la búsqueda de usuarios de rutas" a "Sí"
  7. Agregar la ubicación de la carpeta cocos2d con "Usuario encabezado Buscar Caminos". Si lo desea, puede agregar la carpeta cocos2d a su lista de árboles fuente en Xcode, y en su lugar solo complete el nombre de la variable aquí. Por ejemplo: $ {COCOS2D_SRC}. Esto es útil si más tarde desea cambiar la estructura de carpetas del entorno de compilación.

  8. Haga clic en el objetivo y seleccione la pestaña de fases de compilación. Desea vincular los siguientes binarios con su biblioteca. Asegúrate de que estén allí. libcocos2d.a libz.dylib libxml2.dylib OpenGLES.framework QuartzCore.framework UIKit.framework Foundation.framework CoreGraphics.framework

Si libcocos2d.a es "rojo", a continuación, Don no te preocupes por eso Todavía compila/enlaces correctamente.

  1. En configuración de construcción, cambie "Crear arquitecturas activas solamente" a YES.

De lo contrario, puede obtener un error ignorar el archivo /Users/Pteriedaktyl/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphoneos/libcocos2d.a, el archivo fue construido para el archivo que no es la arquitectura siendo vinculado (armv6)

  1. En su archivo info.plist, asegúrese de eliminar la entrada dentro de "capacidades de dispositivo requeridas" que dice armv7. De lo contrario, su código solo se ejecutará en dispositivos más nuevos.

Ahora estás listo! Debería poder acceder a la api de cocos2d desde el proyecto de hermanos.Si alguna vez desea cambiar su versión de cocos2d, sólo tiene que cambiar el proyecto cocos2d que está en el espacio de trabajo, actualizar la ruta árbol de origen (si es necesario), y el enlace a la nueva libCocos2d.a

Pruebas: Para probarlo, modifiqué el delegado de la aplicación y vi el código del controlador para que coincida con el código de uno de mis viejos proyectos de hello world.

Por favor, pruebe esto y agréguelo al hilo si tiene algún problema.

1

En el panel Utilidades de libCocos2d.a, debajo del Identidad y Tipo donde configura la biblioteca en relación con Crear productos, desplácese hasta el final y asegúrese de que la Membresía objetivo esté seleccionada para sus objetivos. De lo contrario, no la incluirá en la construcción real realizada por el objetivo. Al menos, esa fue la única forma en que pude reproducir este problema.

+0

¿Entonces está diciendo que cuando sigue los pasos que puse, no ve ningún error? –

+0

Siempre que la membresía de Target esté establecida como sí, funcionó y no da ningún error. –

+0

¿Tu aplicación tiene algún código que acceda a la API de cocos2d? Si no hay un código, se construye bien. –

Cuestiones relacionadas