Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

348
Visualizações
Cómo usar un C dylib desde un archivo Swift en un marco

Estoy considerando comenzar a usar Swift en un marco, que usa libz.dylib , pero parece que no hay forma de importarlo desde Swift. Probé import zlib e import libz , que no funcionó. ZLib ya está vinculado al objetivo.

Parece que la única forma de obtener mi código Swift para ver las clases de zlib es importar los encabezados necesarios en un encabezado de puente, pero los objetivos del marco no pueden tener un encabezado de puente, entonces, ¿hay alguna forma de usar un dylib?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

He agregado una biblioteca dylib de C/C++, con encabezados de API pública de C a Swift Project.

Suponga que la biblioteca es libModule.dylib.

  1. Crear un Directorio con "Módulo"

     mkdir Module; cd Module
  2. Cree un archivo module.map dentro del directorio del módulo

     Touch module.map
  3. cree un directorio, este será el directorio de archivos de encabezado, cualquier nombre servirá.

     mkdir Headers
  4. copie todos los encabezados en el directorio de encabezados

     cp -R path/Headers Headers/
  5. abra module.map y copie los contenidos a continuación, sugiere el equipo de Swift, agregando el prefijo C delante del nombre de la biblioteca, en caso de que sea una biblioteca C.

     module CModule { umbrella "Headers" // for multiple files header "filename.h" // for single header file, in this case even the Header directory is not needed. export * }
  6. Vaya a Configuración de compilación -> Compilador Swift - Rutas de búsqueda

  7. Agregue la ruta completa del directorio del módulo a la clave "Importar rutas".
  8. Vaya a Fases de compilación, Agregar nueva fase de copia de archivos.
  9. Arrastre libModule.dylib a la fase Copiar archivos. Seleccione Destino a "Frameworks".
  10. Si es necesario, agregue libModule.dylib a la sección Vincular binario con bibliotecas de Fases de compilación.

Si se omite el paso 9, obtenemos el famoso error @rpath/ Image not found.

Ahora importe el módulo en Swift como se muestra a continuación:

 import CModule // name given inside module.map

Para la biblioteca del sistema, la mayoría de los pasos no requieren ... simplemente cree un archivo de mapa de directorio y módulo con la ruta de encabezado correcta y haga 6, 7. Parece que el paso 10 ni siquiera es necesario ya que es una biblioteca del sistema.

 module CommonCrypto [system] { header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/CommonCrypto/CommonCrypto.h" export * }
over 4 years ago · Santiago Trujillo Relatório

0

Puede importar módulos del sistema como se describe en esta respuesta: Importación de CommonCrypto en un marco Swift

TLDR

  1. Agregue una carpeta llamada ZLib a su directorio de marco
  2. Agregue un archivo module.map con los siguientes contenidos

module ZLib [system] { header "/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/zlib.h" export * }

Es posible que deba cambiar la ruta a su encabezado zlib . El ejemplo funciona para XCode 7 Beta y El Capitan.

  1. Agregue el archivo module.map generado actualmente a su configuración de compilación
  2. Importe ZLib en su archivo Swift y estará listo para comenzar
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda