Tengo proyecto con una dependencia en una biblioteca estática de un tercero y las tres bibliotecas. En XCode 3.X, para hacer que mi proyecto se compilara, tuve que usar el indicador -force_load en la configuración de compilación "Other Linker Flags" y especificar cada una de las tres20 bibliotecas que quería incluir.¿Por qué -force_load ya no es necesario para mis tres20 dependencias en XCode 4.2?
Al intentar crear un archivo en XCode 4.2, recibí un error de "símbolo duplicado". Resolví esto eliminando los siete indicadores independientes deforceforce que se referían a cada una de las tres bibliotecas de las cuales tenía una dependencia.
Mi proyecto ahora se crea con éxito.
Me pregunto si alguien puede explicarme por qué este cambio funcionó. ¿Hubo un error que XCode 4.2 solucionó, o es un cambio de comportamiento? This post suggests había un error en XCode 3.2, pero sería genial si alguien pudiera arrojar más luz sobre este tema para mí, así puedo estar seguro de que no he podido hacer algo mal al eliminar estos -force_load flags.
Gracias!
Genial, así que definitivamente fue un error, y empíricamente parece que se ha corregido (aunque Apple no ha anunciado nada ...) ¡Gracias! – esilver
Creo que todavía necesita -ObjC para cargar Categorías, y esto aún le dará error de "símbolo duplicado" si lo hace, intacto tiene símbolos duplicados, ¿verdad? – hooleyhoop
@hooleyhoop - Correcto, como dije anteriormente, usted todavía necesita -ObjC para las categorías, pero en mi experiencia al eliminar el indicador de enlazador '-all_load' se deshace de casi todos los errores de símbolos duplicados que ve. Si mal no recuerdo, muchos de esos símbolos provienen de marcos que se vincularon en más de una biblioteca estática, luego ambas bibliotecas estáticas se utilizaron en la misma aplicación. Por supuesto, '-ObjC' no lo protegerá contra el caso en que las diferentes categorías definen el mismo nombre de método como una extensión para la misma clase, pero las convenciones de nomenclatura adecuadas deberían evitarlo. –