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 archivoFooCppBasedSwiftLibrary.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 enSWIFT_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)
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
yVALID_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.