0 votos

no se puede vincular el código C++ a .dylib en Xcode 12.2 (sólo en la versión de lanzamiento)

Recientemente he actualizado de Xcode 12.1 a 12.2, en MacOS Catalina 10.15.7. Mi proyecto C++ (que utiliza OpenCV) compiló sin problemas con Xcode 12.1. Después de la actualización me sale un montón de estos:

ld: warning: ignoring file /usr/local/Cellar/opencv/4.5.0_5/lib/libopencv_gapi.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64

(No hubiera podido trabajar, pero por suerte me di cuenta de que cambiando la opción "Mi Mac" Esquema para usar Depurar en lugar de Libere para Configuración de la construcción permite construir sin problemas. Sólo se ejecuta mucho más lento).

Mi búsqueda en Internet sugiere que esto podría estar relacionado con la compilación del "binario universal". Al parecer, la solución aprobada por Apple es esperar a que OpenCV publique una versión "binaria universal" del .dylib. Hasta entonces:

  • ¿hay una manera de decir que, por ahora, sólo me importa la máquina x86_64 en la que estoy estoy desarrollando?
  • ¿es posible retroceder a Xcode 12.1?

0voto

Paulus Puntos 70

No pretendía hacer un formato de preguntas y respuestas. Pero después de publicar mi pregunta arriba, intenté buscar más en el stackoverflow principal. Encontré una pregunta de Oscar con un respuesta a mi pregunta por Yi Hu . Para reafirmar la respuesta de Yi Hu:

  • ir a la configuración del proyecto
  • seleccionar el ejecutable ("texsyn" en mi caso)
  • seleccione la pestaña Build Settings
  • búsqueda de Arquitecturas
  • cambiar Build Active Architecture Only para que sea Yes tanto para Debug como para Release

Esto resolvió totalmente mi problema. Ahora se construye sin errores y se ejecuta el doble de rápido.

Antes:

enter image description here

Después:

enter image description here

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X