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.

Símbolo no encontrado: curl_mime_init en macOS 10.3 (High Sierra).

He creado un marco de .framework en Mac usando Xcode. En el marco utilizo Libcurl para manejar APIs. Una de las APIs utiliza curl_mime_init para enviar un archivo. Este marco funciona perfectamente en MacOS 10.15 y superior. Sin embargo, no funciona en MacOS de versiones inferiores a 10.15.

Mientras subo el archivo, obtengo el siguiente error en el informe de errores:
Dyld Error Message:
Símbolo no encontrado: _curl_mime_init
Referenciado desde: /Applications/Adobe InDesign 2020/*/BasicExternalObject.framework/BasicExternalObject (que fue construido para Mac OS X 11.3)
Esperado en: /usr/lib/libcurl.4.dylib

Investigué un poco y descubrí que la versión de curl incluida en macOS 10.14 o anterior es curl 7.54.0 (x86_64-apple-darwin18.0) libcurl/7.54.0 LibreSSL/2.6.5 zlib/1.2.11 nghttp2/1.24.1. Sin embargo, curl_mime_init fue añadido en la versión 7.56.0.

Posteriormente actualicé mi curl de 7.54 a 7.70 y aun así encontré que el problema persistía. Confirmé esto ejecutando curl -V y estaba apuntando a la versión actualizada.

Estoy atascado aquí. ¿Hay alguna manera de resolver esto? ¿O tiene algo que ver con el SO?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que su marco de trabajo está construido usando una versión de Libcurl que no es compatible con las versiones de MacOS inferiores a 10.15. El mensaje de error indica que el sistema está tratando de encontrar el símbolo curl_mime_init en una versión de Libcurl que no lo tiene, lo cual es probablemente la versión predeterminada enviada con MacOS.

    Actualizar su propia versión de Libcurl a 7.70 debería solucionar el problema, pero parece que no funcionó. Esto significa que el sistema aún está utilizando la versión antigua de Libcurl, ya sea porque no está instalada correctamente o porque su marco de trabajo no está configurado para usarla.

    Una solución posible es incluir la versión requerida de Libcurl con su marco de trabajo, de modo que pueda cargarse en tiempo de ejecución. Esta es una práctica común para muchos marcos de trabajo que dependen de bibliotecas de terceros.

    Otra posible solución es verificar las rutas del vinculador de su marco de trabajo y asegurarse de que estén configuradas correctamente para apuntar a la versión actualizada de Libcurl. También puede intentar configurar la variable de entorno DYLD_LIBRARY_PATH a la ubicación de la versión actualizada de Libcurl.

    También vale la pena señalar que pueden surgir problemas de compatibilidad al construir software en una versión más nueva de MacOS y ejecutarlo en una versión más antigua. Se recomienda probar su marco de trabajo en diferentes versiones de MacOS para garantizar la compatibilidad.

Comments are closed.