es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Biblioteca estática de Swift basada en fuentes de C++: error en el comando del enlazador: ld: símbolo(s) no encontrado(s) para la arquitectura x86_64 clang

Tengo una biblioteca estática Swift basada en C++ llamada: FooCppBasedSwiftLibrary.

  • Es una biblioteca estática Swift que utiliza algunas fuentes de C++ mezcladas con Objective C utilizando archivos .mm (Objective C++).
  • Las clases ObjectiveC++ están expuestas a Swift (dentro de la misma biblioteca) mediante el archivo module.private.modulemap.
  • La biblioteca se construye correctamente y genera el binario libFooCppBasedSwiftLibrary.a y el archivo FooCppBasedSwiftLibrary.swiftmodule, CONSTRUIDO PARA EL SIMULADOR.
  • Luego, en el proyecto de la aplicación cliente, agregué y enlacé el archivo .a.
  • También en el proyecto de la aplicación cliente, agregué el archivo .swiftmodule y le asigné la ruta de la carpeta padre en SWIFT_INCLUDE_PATHS en la configuración de compilación de la aplicación.
  • Ahora construyo la aplicación cliente en el mismo SIMULADOR con la misma versión de iOS que en la biblioteca estática, pero obtengo varios errores como:
// ...100-500 líneas de registro de errores arriba...
ld: símbolo(s) no encontrados para la arquitectura x86_64
clang: error: el comando del enlazador falló con el código de salida 1 (use -v para ver la invocación)

Imagen

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Los errores que estás viendo indican que el enlazador no puede encontrar los símbolos en el archivo binario libFooCppBasedSwiftLibrary.a para la arquitectura x86_64. Esto sugiere que la biblioteca no fue construida para esta arquitectura o no fue incluida en el proceso de construcción de la aplicación cliente.

    Para resolver este problema, debes asegurarte de que la biblioteca esté construida para las arquitecturas correctas, incluyendo x86_64. Puedes hacer esto verificando la configuración de construcción del proyecto de la biblioteca y asegurándote de que las configuraciones ARCHS y VALID_ARCHS incluyan x86_64.

    También debes confirmar que la biblioteca fue correctamente incluida en el proceso de construcción de la aplicación cliente. Esto incluye agregar los archivos .a y .swiftmodule al proyecto y asegurarte de que estén enlazados e incluidos en el proceso de construcción del objetivo.

    Si continúas experimentando problemas, es posible que necesites ajustar tus configuraciones de construcción o consultar documentación adicional para construir e incluir bibliotecas estáticas en proyectos de iOS.

Comments are closed.