Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
Problema con Frameworks en la herramienta de línea de comandos

Antes de que todos comiencen a lanzarme otras publicaciones de desbordamiento de pila y foros: las miré todas. Ninguno de ellos está ayudando.

Tengo una herramienta cmd simple llamada swizzler y quiero incrustar el marco SwizzleSrc en ella. He seguido todos los tutoriales y los desbordamientos de pila sin suerte. Esto es lo que estoy recibiendo.

Construir

 2019-02-07 19:22:46.785680-0500 Terminal[67444:11837029] flock failed to lock maps file: errno = 35 2019-02-07 19:22:46.786939-0500 Terminal[67444:11837029] flock failed to lock maps file: errno = 35

Correr

 Last login: Thu Feb 7 19:21:08 on ttys018 NAME-iMac:~ NAME$ /Users/NAME/Library/Developer/Xcode/DerivedData/swizzler-aslysekmorknabdslxbxfaeuiztk/Build/Products/Debug/swizzler ; exit; dyld: Library not loaded: @rpath/SwizzleSrc.framework/Versions/A/SwizzleSrc Referenced from: /Users/NAME/Library/Developer/Xcode/DerivedData/swizzler-aslysekmorknabdslxbxfaeuiztk/Build/Products/Debug/swizzler Reason: image not found Abort trap: 6 logout Saving session... ...copying shared history... ...saving history...truncating history files... ...completed. [Process completed]

¿Puede ayudarme alguien, por favor? Llevo días intentándolo sin éxito.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Para solucionar su problema, debemos cambiar la forma en que Xcode maneja los objetivos de la herramienta de línea de comandos de Swift de forma predeterminada, específicamente la convención de vinculación con las bibliotecas estándar de Swift.

Necesitamos que:

  • incruste las bibliotecas estándar de Swift en su marco SwizzleSrc
  • fuerce su ejecutable de línea de comando swizzler para vincular dinámicamente todas las bibliotecas de Swift
  • finalmente, asegúrese de que su ejecutable swizzler pueda encontrar todas las bibliotecas Swift necesarias (ahora ubicadas en el objetivo del marco)

Comencemos (se supone que está utilizando Xcode 10.1 o superior):

Incrustación de las bibliotecas Swift en el marco

Esto es bastante sencillo. Cambie las siguientes configuraciones de compilación para el marco de destino de SwizzleSrc :

  • Incrustar siempre bibliotecas estándar de Swift en Sí

Vinculación dinámica de todas las bibliotecas Swift en la herramienta de línea de comandos

Esta es la parte algo complicada. Agregue la siguiente configuración definida por el usuario para el objetivo de la herramienta swizzler (en la Configuración de compilación ):

  • SWIFT_FORCE_DYNAMIC_LINK_STDLIB establecido en YES
  • SWIFT_FORCE_STATIC_LINK_STDLIB establecido en NO

(Para agregar una nueva configuración definida por el usuario , simplemente haga clic en el botón + justo debajo del título de la pestaña Configuración de compilación ).

Esto asegurará que su ejecutable de línea de comandos vincule dinámicamente todas las bibliotecas de Swift (es decir, por defecto están vinculadas estáticamente ). Por cierto, el Administrador de paquetes de Swift utiliza exactamente esta misma configuración para solucionar un problema relacionado.

Actualice Runpath para la herramienta de línea de comandos

Agregue las siguientes entradas de Runpath Search Path para el objetivo de la herramienta swizzler (en la Configuración de compilación ):

  • @executable_path
  • @executable_path/SwizzleSrc.framework/Versions/Current/Frameworks

Ahora limpie su carpeta de compilación, reconstruya nuevamente ambos objetivos y verifique si esto solucionó su problema para siempre;)

Referencias

Para obtener más información, asegúrese de consultar también los siguientes enlaces:

  • Cómo agregar un marco Swift dinámico a una herramienta de línea de comandos
  • Swift Frameworks integrados en herramientas de línea de comandos
  • Herramienta de línea de comandos de macOS con Swift Cocoa Framework: biblioteca no cargada

También creé un proyecto Xcode (¡muy!) simple que demuestra los pasos anteriores:

  • github.com/pmattos/Swift-CLI-con-Framework
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda