Comment créer un cadre de travail avec des fichiers dylib dans Xcode 4
J'ai créé un nouveau cadre de cacao dans Xcode, supprimé tous les fichiers et bibliothèques, il comprend au début, à l'exception de la prise en charge de fichiers.
J'ai 2 fichiers:
add.h
#ifndef add_add_h
#define add_add_h
void add(void);
#endif
et
add.c
#include <stdio.h>
#include "add.h"
void add(void)
{
printf("adfding");
}
dans les phases de construction-je ajouter ajouter.c pour compiler les sources et les ajouter.h à compiler les en-têtes du public. Le projet de construire sans problème, mais dans le cadre il n'y a pas de dylib fichier et quand je l'ai faites glisser et déposez le cadre d'un autre projet, il est dit que dylib fichier n'a pas pu être trouvé.
dyld: Library not loaded: @rpath/add.framework/Versions/A/add
Referenced from: /Users/vjoukov/Desktop/Projects/test/build/Debug/test.app/Contents/MacOS/test
Reason: image not found
Comment puis-je faire un cadre simple et de garder dylib fichiers à l'intérieur ?
source d'informationauteur user966020
Vous devez vous connecter pour publier un commentaire.
Je pense que vous êtes mal comprendre le message d'erreur.
Un
.framework
fonctionne comme une bibliothèque dynamique, mais il ne sera pas tout de Mach-O chargeable fichier objet avec une réelle.dylib
extension de nom de fichier à l'intérieur de l' .cadre de dossier.Il ya un couple de raisons que vous pouvez recevoir ce message d'erreur à partir de
dyld
la bibliothèque de liens dynamiques chargeur, au moment de l'exécution. La première, c'est que vous avez oublié de copier le .cadres de dans le, construit le paquet d'application pendant le processus de génération. Alors qu'ils peuvent être copiés à propos de n'importe quel emplacement à l'intérieur de l'app bundle, le lieu traditionnel est en AppName.app/Contents/Frameworks/. Si vous ne l'avez pas déjà fait, sélectionnez le Projet > Nouvelle Phase de construction > Nouvelle Copie de Fichiers de la Phase de construction. Changer la Destination popup de Cadres comme dans l'image ci-dessous.Vous pourrez ensuite glisser l'icône du cadre dans le dossier de sorte qu'il est copié au cours du processus de construction.
La deuxième et plus probablement raison, le cadre ne peut pas être trouvé lors de l'exécution, c'est que vous n'avez pas précisé de quelle runpath des chemins de recherche pour votre exécutable principal. (Ceci est nécessaire, car, comme nous l'avons vu à partir de votre message d'erreur, votre cadre a été construit à l'aide de la plus récente
@rpath/
style installer nom (@rpath/add.framework/Versions/A/add
) plutôt que les anciens@executable_path/
ou@loader_path/
styles).À condition que vous copie la coutume des cadres à l'emplacement mentionné ci-dessus, vous ajoutez une runpath chemin de recherche de l'entrée de
@loader_path/../Frameworks
comme montré dans l'image ci-dessous:L'extrait suivant qui explique comment les bibliothèques dynamiques sont trouvés au moment de l'exécution est à partir de la page de manuel de
dyld
: