iphone objective-c xcode build frameworks

iphone - Error de compilación de XCTest.framework



objective-c xcode (8)

Estoy usando DropBox Core API en mi aplicación y, por lo tanto, debo incluir el framework XCTest porque, cuando no he agregado el framework XCTest, mi aplicación no se puede conectar a Dropbox, sin embargo, cuando agrego el framework, Obtiene un error al construir para el simulador. ¡No hay nada malo con mi código! Aquí está el error:

Ld /Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Products/Debug-iphonesimulator/SnapDrop!.app/SnapDrop! normal i386 cd "/Users/Zach/Desktop/SnapDrop!" setenv IPHONEOS_DEPLOYMENT_TARGET 6.1 setenv PATH "/Applications/Xcode5-DP6.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode5-DP6.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Applications/Xcode5-DP6.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode5-DP6.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -L/Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Products/Debug-iphonesimulator -F/Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Products/Debug-iphonesimulator -F/Users/Zach/Downloads/dropbox-ios-sdk-1.3.5 -F/Users/Zach/Downloads/dropbox-ios-sync-sdk-1-1.1.0 -F/Applications/Xcode5-DP6.app/Contents/Developer/Library/Frameworks -F/Users/Zach/Desktop -filelist /Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Intermediates/SnapDrop!.build/Debug-iphonesimulator/SnapDrop!.build/Objects-normal/i386/SnapDrop!.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=6.1 -framework iAd -framework AssetsLibrary -framework QuartzCore -framework SystemConfiguration -framework Security -framework CFNetwork -framework XCTest -framework Dropbox -framework DropboxSDK -framework CoreGraphics -framework UIKit -framework Foundation -Xlinker -dependency_info -Xlinker /Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Intermediates/SnapDrop!.build/Debug-iphonesimulator/SnapDrop!.build/Objects-normal/i386/SnapDrop!_dependency_info.dat -o /Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Products/Debug-iphonesimulator/SnapDrop!.app/SnapDrop! ld: building for iOS Simulator, but linking against dylib built for MacOSX file ''/Applications/Xcode5-DP6.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest'' for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

¿Que debería hacer? Si mi framework está dañado, ¿puedes decirme cómo volver a instalarlo? He intentado eliminar y reinstalar Xcode sin suerte.


Acabo de eliminar el archivo "XCTest.Framework" de Project Navigator> Targets> ''Project Name''> Build Phases. Luego, "Producto" (desplegable)> Limpiar. Lo hice por mí!


Agregando a las posibles soluciones para este problema:

Asegúrese de no haber incluido el archivo MyApplicationTests.m
en la lista "Fuentes de compilación" de los objetivos sin prueba del proyecto.

Esto puede suceder cuando limpias carpetas en el disco
y movió las cosas manualmente, por ejemplo.

Project > Targets > MyApplication > Build Phases > Compile Sources

El síntoma más obvio es que obtienes el error XCTest
cuando intente ejecutar su aplicación en el iPhone (o simulador).

XCTest no debe incluirse en el código de su aplicación habitual como se indica
en las otras respuestas también.


Debo añadir una pequeña nota:

Mi proyecto tenía todas las rutas correctas (esas tres predeterminadas) pero el orden era diferente. Establecer el orden correcto (arrastrando la ruta con el mouse en la lista) solucionó el problema.


Estoy de acuerdo con Mike Weller. Probablemente no deba vincularse con el framework XCTest en su código de aplicación real. Retire el marco XCTest. Observe los errores del vinculador y elimine los elementos que hacen referencia al marco. Lave, enjuague, repita.

Si tienes un objetivo de prueba, eso es diferente. Lo que puede suceder fácilmente durante la migración de SenTestKit a XCTest es tener una ruta de búsqueda de framework incorrecta que causa un enlace con el framework de Mac OS X en lugar del marco de iOS. Esto no funciona

Una forma fácil de ver cuál es la configuración correcta de la ruta de búsqueda del marco es crear un proyecto ficticio, abrir la configuración de compilación para el objetivo Pruebas y luego filtrar para "Ruta de búsqueda del marco".

Creo que los caminos de vainilla correctos son:

$(SDKROOT)/Developer/Library/Frameworks (non-recursive) $(inherited) (non-recursive) $(DEVELOPER_FRAMEWORKS_DIR) (non-recursive)


Ninguno de los anteriores funciona para mí, todavía obtengo el error,

ld: warning: Auto-Linking suministrado ''/Applications/Xcode.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest'', falta la arquitectura requerida i386 en el archivo /Applications/Xcode.app/Contents/Developer/Library/ Frameworks / XCTest.framework / XCTest (2 sectores)

Utilicé la opción de refactorización de XCode 6, convertí mis SenTests correctamente ejecutados en XCTests.

Sin embargo, cuando configuro las rutas de búsqueda de marcos,

$(SDKROOT)/Developer/Library/Frameworks and $(inherited)

funcionó.


Puede crear su proyecto de marco, que será un proyecto de módulo sin archivos de prueba. Simple desmarque las pruebas al crear el proyecto.


Si tiene un objetivo de prueba, también debe asegurarse de que su Base SDK esté configurado en iOS 7.0 (o incluso mejor: Latest iOS más Latest iOS )


Verifique las rutas de búsqueda del marco para su objetivo principal y su objetivo de prueba. Tenía un montón de basura en el mío

más fácil si crear un nuevo proyecto ios de vista única. ejecute la prueba para ver si se puede ejecutar; de manera predeterminada, falla y luego verifica la ruta de acceso del marco de trabajo en los objetivos principales y de prueba. y compáralo con tu proyecto

ver respuesta por mí brian.clear aquí

Advertencia de Apple Mach-O vinculador (id): creación para MacOSX, pero vinculación contra dylib creada para iOS