web-dev-qa-db-fra.com

Xcode ne trouve pas le fichier d'en-tête

J'essaie de créer un cadre pour mon projet. Dans mon framework, j'ai ajouté le chemin de mes fichiers d'en-tête à cible> Paramètres de construction> chemin de recherche d'en-tête. Après cela, j'ai ajouté ce framework à mon projet par Build Phases> Link Binary With Libraries.

Lorsque je veux importer le fichier d'en-tête que j'ai inclus dans mon framework, j'obtiens une erreur fichier .h introuvable. Ce que j'essaie de faire est-il possible? Ou est-ce que je manque quelque chose?

J'ai créé un cadre comme ça;

Ouverture d'un nouveau projet sous iOS> Framework & Library> Cocoa Touch Framework Je n'ai ajouté aucune classe, je viens d'ajouter le chemin de recherche d'en-tête et le chemin de recherche de bibliothèque et les indicateurs de l'éditeur de liens. Je ne pense pas que j'ai fait une erreur dans cette partie parce que nous le faisons dans chaque projet mais la première fois je le fais pour le cadre. Ensuite, j'ai appuyé sur run et obtenir mon framework à partir des produits.

J'ai ouvert mon projet et ajouté des phases de construction de framework> Lier le binaire aux bibliothèques. Je peux importer le fichier d'en-tête du framework comme #import <myframework/framework.h> Après cela, j'ai ajouté le framework également Général> Binaires intégrés. Tout semble normal mais je ne peux pas ajouter d'en-têtes à mon projet que j'ai inclus dans mon framework avec un chemin de recherche d'en-tête. Je dois utiliser le chemin de recherche d'en-tête car il y a des tonnes d'en-têtes, je ne peux pas tous les ajouter à mon Xcode.

17
Yucel Bayram

Assurez-vous que tous les en-têtes publics apparaissent dans la section publique, sinon glissez et déposez le fichier .h sur public enter image description here

23
Meghs Dhameliya

Tout semble normal mais je ne peux pas ajouter d'en-têtes à mon projet que j'ai inclus dans mon framework avec un chemin de recherche d'en-tête.

Il semble que vous vous attendiez à ce que tous les en-têtes qui se trouvent sur le chemin spécifié par votre chemin de recherche d'en-tête fassent partie de votre framework, de sorte que s'il y a un en-tête nommé SomeHeader.h dans votre chemin de recherche, il sera intégré à votre framework et vous pourrez l'importer dans des projets clients comme:

#import <MyFramework/SomeHeader.h>

Mais ce n'est pas du tout le cas. Si vous souhaitez que votre framework fournisse SomeHeader.h, vous devez ajouter ce fichier au projet et, comme Meghs Dhameliya l'a déjà souligné, vous devez spécifier SomeHeader.h dans la partie En-têtes publics de la phase de création des en-têtes. Ainsi, Xcode copiera le fichier d'en-tête dans le framework afin que les clients du framework puissent importer le fichier d'en-tête. Ce n'est pas clair que c'est ce que vous voulez vraiment, cependant ... dans les commentaires, vous avez écrit:

Il y a beaucoup d'en-têtes dans un autre chemin. Je dois malheureusement utiliser le chemin de recherche d'en-tête. Type de règle d'entreprise.

Il semble donc que tous les projets de votre entreprise spécifient le même chemin de recherche d'en-tête afin qu'ils aient accès à ces fichiers d'en-tête. Si c'est vrai, il n'y a aucune raison pour que les projets aient besoin de #import les à partir de votre framework, mais dans ce cas, il n'est pas clair quel est le problème réel. Ou bien, vous créez peut-être le framework afin que les projets clients puissent obtenir les en-têtes de votre framework au lieu d'avoir à référencer le chemin de recherche d'en-tête. Dans ce cas, vous devrez ajouter ces en-têtes au projet et les spécifier comme décrit ci-dessus.

3
Caleb