2011-03-13 17 views
10

Todo funcionaba perfectamente bien en Xcode 3 ayer antes de actualizar. Así que completé la actualización, reinicié mi computadora y abrí mi proyecto anterior. Tuve que reconfigurar algunas configuraciones como las rutas del encabezado para poder comenzar a compilar. Estoy usando AdWhirl por mediación de anuncios, y en este punto mis errores empezar a leer algo comoActualizado a Xcode 4: flujo continuo de errores de símbolos duplicados que causan errores de compilación

duplicate symbol _OBJC_METACLASS_$_SBJSON in /Users/Admin/Desktop/TMapLiteAdwhirl/AdWhirl/MMSDK/libMMSDK.a(SBJSON.o) and 
/Users/Admin/Library/Developer/Xcode/DerivedData/TruxMapLite-bgpylibztethnlhkfkdumpvrjvgy/Build/Intermediates/TruxMapLite.build/Debug-iphoneos/TruxMapLite.build/Objects-normal/armv6/SBJSON.o for architecture armv6 

La biblioteca que se refiere es el SDK para una de las redes de anuncios que estoy incluyendo en AdWhirl. Los dos "símbolos duplicados" se refieren al MISMO ARCHIVO, pero usan caminos diferentes. Si todavía tuviera XCode 3, simplemente trataría de excluir estas bibliotecas de la ruta de compilación, pero no tengo idea de cómo hacerlo en Xcode 4. He intentado todo hasta la eliminación de la biblioteca y todos los asociados archivos de mi proyecto, pero cuando lo haga, simplemente obtendré el mismo tipo de error para una biblioteca diferente en el directorio de AdWhirl.

Esto es increíblemente frustrante porque antes de la actualización todo funcionaba sin problemas y estaba dispuesto a enviar mi binario. Si alguien tiene algún consejo, id estará más que feliz de intentarlo. ¡Gracias!

+0

Estoy teniendo el mismo problema, he leído la respuesta de @ justin, pero no puedo encontrar la marca para esos parámetros – JonLOo

Respuesta

5

Me acabo de encontrar con un problema similar y resuelto por la edición de mi configuración de generación:

  1. Elija el Project Navigator de la lista del navegador de la izquierda (⌘-1).
  2. Seleccione su archivo de proyecto.
  3. Seleccione su objetivo de la lista que aparece en el área del editor.
  4. Cambiar a la pestaña Build Phases.
  5. Compruebe Link Binary with Libraries y/o Compile Sources para la biblioteca duplicada .

Ahora, no estoy utilizando la misma configuración de biblioteca o proyecto, por lo que puede estar fuera de la base.

1

No estoy seguro de su configuración, pero tuve un problema similar y lo solucioné al cambiar la ubicación de mi compilación. Lo había establecido en una ruta absoluta en xcode 3, y olvidé cambiar esta configuración en xcode 4. Al cambiar la opción de Datos derivados, se corrigieron todos mis errores. Esta opción se encuentra en preferencias-> ubicaciones

5

Asegúrese de que no está importando archivos .m.

Este error me causó un sinfín de problemas.

+0

me acabas de ahorrar mucho tiempo :) – gillyD

0

Acabo de solucionar ese problema reemplazando @class con #import statement en el archivo de encabezado de una de mis clases.

Lo que teóricamente debería funcionar solo con la declaración de @clase (y # importación en la contraparte de implementación) simplemente no quería compilarse con el error "símbolo duplicado".

Por lo tanto, revise sus declaraciones @class vs. #import.

0

Encontré que tenía archivos de objeto antiguos en mis carpetas de origen de una compilación Makefile antigua. Cuando agregué la carpeta de origen a XCode, accidentalmente agregué los archivos fuente y objeto. Eso resultó en estos errores de símbolos duplicados. Quitar los archivos .o y .lo de mis carpetas fuente me ayudó.

También hubo a.carpeta libs en mi carpeta de origen de otra versión anterior. Eso también contenía archivos .o. Eliminarlos resolvió el problema.

Cuestiones relacionadas