2009-07-31 19 views
8

Necesito crear una versión para Mac de nuestras bibliotecas para uno de nuestros clientes. No estoy tan familiarizado con las bibliotecas dinámicas en Mac, pero por lo que entiendo, tengo 2 opciones: .dylib o frameworks. ¿Cuál sería la mejor opción? ¿Por qué?creando un .dll en un mac: .dylib o framework?

Pocas preguntas relacionadas:

  • Si he entendido bien, .dylib han para ser instalado en uno de los directorios stnadard UNIX como/usr/lib, etc Por lo tanto utilizando un .dylib debe hacer El instalador de mi cliente es mucho más complejo, ya que probablemente necesiten solicitar permiso para escribir algo en una carpeta del sistema.
  • ¿Pueden los marcos de trabajo ser privados e incrustados en el paquete de mi cliente? ¿Entonces nadie más puede verlos/usarlos?

Cualquier crítica/comentario/idea constructiva más que bienvenida. Gracias por adelantado.

Alex

+0

¿Está mirando la instalación de arrastrar y soltar, o proporciona una aplicación de instalación (.pkg) que maneje todo? Si es el último, entonces los permisos no deberían ser un problema, ya que casi todos los instaladores que he ejecutado solicitan una contraseña de administrador (obteniendo así permisos de administrador) por adelantado. –

Respuesta

8

.dylib es similar a .so en Linux.

Los marcos son básicamente la forma en que OSX distribuye bibliotecas y encabezados juntos. Son el paquete de aplicación equivalente para la distribución de la biblioteca.

Con cualquier método, si usted quiere asegurarse de que otras personas no los utilizan usted debe utilizar bibliotecas estáticas (.a archivos) y conseguir su cliente para enlazar estáticamente ellas en su aplicación.

De lo contrario, no hay mucha diferencia entre Frameworks y .dylib, excepto que el anterior es más agradable para los desarrolladores de OSX.

Cualquiera se puede incrustar dentro de un paquete de aplicación de clientes, otool/install_name_tool manejar ambos bien.

+1

Puedes usar '.so' en OS X también ¿no? Lo he visto antes de todos modos. – mk12

+0

@ mk12 Sí. En realidad, todos los módulos de Apache en OS-X son '.so' – Hawken

+0

¡Hola! ¿Cómo puedo incluir dylib en un paquete de aplicaciones de clientes? Estoy tratando de integrar las bibliotecas de OpenCV en una aplicación de Qt. –