2013-08-28 4 views
4

J'ai un projet qui construit une bibliothèque statique (.a). Cette bibliothèque statique nécessite la présence de libz.dylib dans l'application. Maintenant, ce que j'essaie de faire est de ... Lier le libz.dylib avec la bibliothèque statique elle-même afin que les développeurs qui utiliseront ma bibliothèque statique n'auront pas à lier libz.dylib avec leur application.Liaison statique d'un dylib

Voici ce que j'ai essayé jusqu'à présent, et les erreurs que je rencontrais:

  • Si je lien juste la libz.dylib dans Link Binary with Libraries phase de construction de la bibliothèque statique cible, puis utilisez la bibliothèque statique finale avec l'application:

    Undefined symbols pour l'architecture i386:

    "_deflate", fait référence à partir de:

  • Si je ajoute aussi -lz dans le Other Linker Flags de celui-ci donne la cible Bibliothèque statique, erreur au moment de la construction de la bibliothèque statique lui-même:

    /Applications/Xcode.app/Contents/Developer/Toolchains /XcodeDefault.xctoolchain/usr/bin/libtool: impossible de localiser le fichier pour: -lz /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: fichier: -lz n'est pas un fichier objet (non autorisé dans une bibliothèque)

Je pense qu'il est même possible de lier une bibliothèque dynamique à la bibliothèque statique, et si oui, comment?

+1

Toute application utilisant votre bibliothèque statique doit se lier avec les frameworks ou les bibliothèques dynamiques partagées que votre bibliothèque lie. – Amar

Répondre

2

La bibliothèque statique que vous créez n'est pas un processus séparé mais fait partie du processus qui est créé pour votre application (en utilisant la bibliothèque statique). Les bibliothèques dynamiques partagées sont chargées/partagées par processus, il est donc important que quel que soit les frameworks (les frameworks iOS sont aussi des bibliothèques dynamiques) ou dylibs vos liens statiques, votre application doit aussi les lier pour que les bibliothèques partagées soient chargées le processus de votre application.

Pour en savoir plus,

Hope that helps!

+0

Oui. Cela a vraiment du sens. Je me demandais juste si vous avez un lien/référence qui mentionne/soutient cette déclaration. Je veux juste l'explorer pendant un moment avant de parvenir à une conclusion. – defactodeity

+0

@defactodeity S'il vous plaît vérifier ma modification. – Amar