2012-01-02 4 views
26

Ya no puedo compilar mi proyecto para el dispositivo o el simulador. Recibo 13 errores de Apple Mach-O-Linker. Todo comenzó después de que fracasé en el intento de usar sharekit. Aquí está el registro del error:Errores de Apple Mach-O Linker y no sé qué hacer

ld: warning: directory not found for option '-F/Users/bbrandy95/Documents/Broken Brandsonic Web Projects/Brandsonic Web mobile/../../Downloads/0.2.1gm1/iphoneos4.0/System/Library/Frameworks' 
Undefined symbols for architecture armv7: 
    "_OBJC_CLASS_$_NSURLRequest", referenced from: 
     objc-class-ref in Brandsonic_Web_mobileAppDelegate.o 
     objc-class-ref in Brandsonic_Web_mobileViewController.o 
    "_OBJC_CLASS_$_NSAutoreleasePool", referenced from: 
     objc-class-ref in main.o 
    "_objc_msgSendSuper2", referenced from: 
     -[Brandsonic_Web_mobileAppDelegate dealloc] in Brandsonic_Web_mobileAppDelegate.o 
     -[Brandsonic_Web_mobileViewController didReceiveMemoryWarning] in Brandsonic_Web_mobileViewController.o 
     -[Brandsonic_Web_mobileViewController dealloc] in Brandsonic_Web_mobileViewController.o 
    "_objc_setProperty", referenced from: 
     -[Brandsonic_Web_mobileAppDelegate setWindow:] in Brandsonic_Web_mobileAppDelegate.o 
     -[Brandsonic_Web_mobileAppDelegate setViewController:] in Brandsonic_Web_mobileAppDelegate.o 
    "__objc_empty_vtable", referenced from: 
     _OBJC_CLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o 
     _OBJC_METACLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o 
     _OBJC_CLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o 
     _OBJC_METACLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o 
     _OBJC_METACLASS_$_SecondView in SecondView.o 
     _OBJC_CLASS_$_SecondView in SecondView.o 
    "_objc_msgSend", referenced from: 
     _main in main.o 
     -[Brandsonic_Web_mobileAppDelegate application:didFinishLaunchingWithOptions:] in Brandsonic_Web_mobileAppDelegate.o 
     -[Brandsonic_Web_mobileAppDelegate dealloc] in Brandsonic_Web_mobileAppDelegate.o 
     -[Brandsonic_Web_mobileAppDelegate GOOGLE] in Brandsonic_Web_mobileAppDelegate.o 
     -[Brandsonic_Web_mobileAppDelegate YOUTUBE] in Brandsonic_Web_mobileAppDelegate.o 
     -[Brandsonic_Web_mobileAppDelegate WIKI] in Brandsonic_Web_mobileAppDelegate.o 
     -[Brandsonic_Web_mobileViewController webView:shouldStartLoadWithRequest:navigationType:] in Brandsonic_Web_mobileViewController.o 
     ... 
    "__objc_empty_cache", referenced from: 
     _OBJC_CLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o 
     _OBJC_METACLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o 
     _OBJC_CLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o 
     _OBJC_METACLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o 
     _OBJC_METACLASS_$_SecondView in SecondView.o 
     _OBJC_CLASS_$_SecondView in SecondView.o 
    "_OBJC_CLASS_$_NSObject", referenced from: 
     _OBJC_CLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o 
    "___CFConstantStringClassReference", referenced from: 
     CFString in Brandsonic_Web_mobileAppDelegate.o 
     CFString in Brandsonic_Web_mobileAppDelegate.o 
     CFString in Brandsonic_Web_mobileAppDelegate.o 
     CFString in Brandsonic_Web_mobileViewController.o 
     CFString in Brandsonic_Web_mobileViewController.o 
     CFString in Brandsonic_Web_mobileViewController.o 
     CFString in Brandsonic_Web_mobileViewController.o 
     ... 
    "_OBJC_CLASS_$_NSKeyedUnarchiver", referenced from: 
     objc-class-ref in Brandsonic_Web_mobileViewController.o 
    "_OBJC_CLASS_$_NSUserDefaults", referenced from: 
     objc-class-ref in Brandsonic_Web_mobileViewController.o 
    "_OBJC_CLASS_$_NSURL", referenced from: 
     objc-class-ref in Brandsonic_Web_mobileAppDelegate.o 
     objc-class-ref in Brandsonic_Web_mobileViewController.o 
    "_OBJC_METACLASS_$_NSObject", referenced from: 
     _OBJC_METACLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o 
     _OBJC_METACLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o 
     _OBJC_METACLASS_$_SecondView in SecondView.o 
ld: symbol(s) not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
' 

¿Cómo puedo solucionar esto? Por favor ayuda.

+1

¿Cómo se configura su proyecto? Parece que tienes 2 problemas importantes, pero necesitas proporcionar mucha más información sobre tu proyecto. Primero, ¿estás usando algún tipo de biblioteca de crack? Así es como parece ... descargó el SDK de iOS e intentó vincularlo directamente. Los errores se deben a que no puede encontrar el SDK de iOS 4 que estaba utilizando desde un lugar no estándar y, por lo tanto, no puede vincular la biblioteca de Foundation. Si está utilizando una versión válida de Xcode con soporte para iOS 5 (Xcode 4.2.1), elimine su viejo marco falso, agregue Foundation y AppKit y vuelva a compilar. –

+0

¡¡Gracias !! Resultó que no tenía el marco de base en mi proyecto. ¡Lo agregué y ahora puedo compilar! Todavía tengo 2 errores Apple Mach-0 Linker pero puedo compilar y no tengo que volver a escribir mi aplicación. Gracias Jason Coco, sin tu sugerencia, nunca hubiera pensado en buscar los marcos adecuados. –

+0

para la advertencia (posiblemente no relacionada) vea esto: http://stackoverflow.com/questions/9458739/ld-warning-directory-not-found-for-option – LearnCocos2D

Respuesta

2

Parece que el archivo del proyecto puede haber sido dañado de alguna manera.

La manera más segura de arreglar esto es crear un nuevo proyecto y mover sus archivos y el viejo info.plist encima de él.

La siguiente forma más probable de corregir esto es crear un nuevo objetivo en su proyecto actual y ver si eso se compilará (si tiene indicadores especiales del objetivo anterior, querrá copiarlos).

También podría intentar compilar para Release vs. Build y si alguno de ellos funciona, observe todas las opciones del compilador y vea qué es diferente.

Si agregó una ruta de búsqueda de encabezado para Sharekit, quizás intente borrar toda la ruta de búsqueda del encabezado y ver si eso soluciona las cosas. También asegúrese de que su proyecto aún incluya los marcos que incluye un nuevo proyecto (UIKit y NSFoundation, posiblemente otros).

0

Los problemas son los espacios en su camino:

Xcode utiliza el siguiente modificador para el enlazador:

-F/Users/bbrandy95/Documents/Broken Brandsonic Web Projects/Brandsonic Web mobile/../../Downloads/0.2.1gm1/iphoneos4.0/System/Library/Frameworks 

y ya que no es citado, no funcionará. (Se busca la carpeta "/Users/bbrandy95/Documents/Broken"

Debe cambiar el nombre de los directorios, o mirar a través de la configuración del proyecto y agregar citas a los directorios. (Pero esto puede ser difícil de encontrar)

+0

No es una cuestión de presupuestos. La ruta completa es visible como parte de la "opción", por lo que cuando se pasó al vinculador, se escapó y/o se citó correctamente. El problema es que probablemente movió o eliminó su SDK pirateado. –

+1

¿cómo piratear un SDK que puedes descargar de forma gratuita? el error está escrito en la primera línea ... debe ser una ruta '-F" con espacios "' si contiene espacios. – Bastian

+1

NO pirateé mi SDK. Repito, NO pirateé mi SDK. COMPRÉ Y PAGÉ POR Xcode 4 desde la tienda de aplicaciones mac cuando costaba $ 4.99 por el leopardo de las nieves. Luego, cuando compré el león de la tienda de aplicaciones Mac, descargué xcode 4.1 y lo actualicé a 4.2 cuando salió. No he podido actualizar a 4.2.1 debido a un error. Tengo que falsificar el código para firmar mi trabajo porque soy un desarrollador de jailbreak. Me ofende que me acusen de tal cosa. –

49

Por cada uno con un similares . Si el error que ocurre normalmente se puede eliminar el "camino" en el punto

Destino-> Construir Preferencias-> Biblioteca de rutas de búsqueda enter image description here

+3

Si está utilizando un marco como Pixate, intente hacer lo mismo para las rutas de búsqueda de Framework (dejando '$ (inherited)' solo). –

+0

Gracias, funciona perfectamente – iOSAppDev

+4

Pero, ¿qué pasa si no tengo ningún elemento en el camino? –

0

yo también había t El mismo problema con 45 errores tipo iguales, cuando agrego libxml2.dylib a mi proyecto, los errores desaparecen.

0

tuve este problema, ahora para mis circunstancias seleccionar una versión más reciente de iOS como el destino de despliegue rectifica esto por mí. Mi proyecto se configuró para implementarse en iOS 5 de forma predeterminada y cambiar esto a 7 (el más reciente) fue el truco.

Para cualquier persona nueva en el desarrollo de iOS esto se puede hacer haciendo clic en su archivo de proyecto XCode en el navegador> información de despliegue> objetivo de despliegue y seleccionando la versión apropiada del menú desplegable.

Soy escéptico de que esto resolverá algunos de los problemas que otros están teniendo, pero puede haber algunas personas en el mismo barco que yo.

18

Este error puede ocurrir cuando se agrega un marco a un proyecto más de una vez.

  • Puede solucionar esto quitando el duplicado. Para encontrarlo, seleccione el marco en el navegador del proyecto Xcode y elija Mostrar en Finder. Luego, limpia y crea tu proyecto.

Esto también puede deberse a que faltan archivos de encabezado de estructura o una referencia a ellos.

  • En ese caso, debería intentar eliminar el SDK o el marco y volver a agregarlo.

Buena suerte.

+1

¡Se corrigió mi problema después de 4 días! ¡HUZZAH! – Rockyfish

+1

¡Eres un héroe! – YellowJ

+0

Este no era mi problema, sino que había un par de marcos enumerados en los que faltaban los marcos reales (estos marcos se muestran con texto rojo). Solo tuve que eliminar esos marcos y reconstruir – Marmoy

1

Agregue el archivo .m para compilar la página de origen.

pasos: -

  1. al hacer clic en él proyecto en el menú de navegación
  2. seleccionar el objetivo
  3. seleccione construir fases
  4. Seleccione el botón + y agregar el archivo de fuentes de compilación.

Esperanza que ayuda a cualquier persona con este problema

4

Si usted dependencias instaladas usando CocoaPods, asegúrese de que abra su proyecto XCode haciendo clic en el archivo de .xcworkspace y no el archivo .xcodeproj.

+0

Sí. ¡Trabajó para mi! Estoy usando Córdoba. Obviamente, Córdoba usa CocoaPods. ¡Gracias! – hol

0

Se debe a que el proyecto insertó el archivo xcdatamodeld de los datos centrales en las fuentes de compilación. Seleccione su proyecto -> Fases de compilación -> Compilar fuentes y eliminar el archivo projectName.xcdatamodeld. Y también compruebe si ha importado el archivo .m en lugar del archivo .h, sino que también proporciona el mismo error de enlazador. Verifique todos los códigos de importación. Y compruebe si ha agregado el trabajo de marco de datos principal en la biblioteca y el archivo .h de datos centrales importados. Compruebe la creación de NSManagedObject e importe su archivo. Solo pruébalo y respóndeme si aún hay algún error.

+0

Muchas gracias ... !! Esta funcionando.!!! –

0

que tenían el mismo problema,

yo simplemente establece la opción Build ->Enable Bitcode-NO

0

me enfrentaba a este problema con mi ser desarrollado cocoapod.

error fue: Apple Mach-O Enlazador errror

Resultó, que había definido un protocolo e implementó un protocolo de extensión. Un método de la extensión del protocolo era público, pero el protocolo en sí no lo era. Y esto causó el error Apple Mach-O Linker.

Ejemplo:

protocolo MyProtocol {var field: String {get}}

extensión MyProtocol {pública func giveMeSomething() -> string}

public class MiClase: MyProtocol {}

En la descripción, el error menciona MyClass a la que se hace referencia desde MyProtocol -> MiProtocolo al que se hace referencia desde giveMeSomething() ...

Por lo tanto, la solución era hacer Myprotocol también pública

la esperanza de que ayude a alguien.

Cuestiones relacionadas