Einschließen eines nicht modularen Headers innerhalb des Framework-Moduls
Ich bin mit Xcode 6,
1) Erstens: ich bin erstellen einer dynamischen Bibliothek (CoreLibrary). Diese Bibliothek enthält RequestPoster.h-Datei.
2) Dann erstelle ich eine Cocoa Touch Framework und ergänzt dieses dynamische Bibliothek (CoreLibrary).
3) Dann diesen Rahmen fügen Sie über mein Projekt und es gibt Fehler in RequestPoster.h-Datei (CoreLibrary).
Fehler : Zählen von nicht-modularen Kopf-innen-framework Modul
Klasse :
ifaddrs.h, arpa/inet.h, sys/types.h>
Diese Datei im Projekt nicht gefunden.
InformationsquelleAutor der Frage Dev | 2015-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie die Build-Einstellungen unter "Ziel" und setzen Sie "Allow Non-modular Beinhaltet im Rahmen der Module" auf JA.
Die wirkliche Antwort ist, dass der Standort des imports geändert werden muss, die von der Bibliothek Eigentümer. Diese Dateien ifaddrs.h, arpa/inet.h, sys/types.h werden immer importiert in einem .h-Datei in ein framework, das Xcode nicht mag. Die Bibliothek Betreuers sollte, verschieben Sie Sie auf ein .m-Datei. Siehe zum Beispiel dieses Problem auf GitHub, wo AFNetworking Feste das gleiche problem: https://github.com/AFNetworking/AFNetworking/issues/2205
InformationsquelleAutor der Antwort bcattle
Stellen Sie sicher, dass die header-Dateien sind öffentlich verfügbar als Bestandteil des Frameworks public-Header.
Goto Rahmen -> Ziel -> Build-Phasen und ziehen Sie die entsprechenden header-Dateien von Projekt zu Öffentlichen. Hoffe, das hilft!
InformationsquelleAutor der Antwort Long Pham
Können Sie festlegen, Erlauben, dass Nicht-modular beinhaltet im Rahmen der Module in den Build-Einstellungen für das betroffene Ziel, JA. Dies ist der build-Einstellung, die Sie Bearbeiten müssen:
HINWEIS: Sie sollten diese Funktion zu entdecken, die zugrunde liegenden Fehler, die ich gefunden habe, werden Häufig verursacht durch die Verdoppelung Winkel-Bracket-global-includes in Dateien mit einigen abhängigen Beziehung, d.h.:
Wenn die Einstellung Erlauben, dass Nicht-modular beinhaltet im Rahmen der Module zu JA Ergebnisse in einer Reihe von "X ist eine mehrdeutige Referenz" - Fehler oder so etwas in der Art, Sie sollten in der Lage sein auf die Spur zu beleidigen doppelte(s) und zu beseitigen. Nachdem Sie gereinigt habe bis Sie Ihren code festgelegt Erlauben, dass Nicht-modular beinhaltet im Rahmen der Module zurück zu KEINE.
InformationsquelleAutor der Antwort revprez
Ich hatte das gleiche problem und lösen es, indem Sie nur die header-Datei der öffentlichkeit.
Wenn Sie arbeiten, auf mehrere Module in Ihr Projekt ein. Dann ist dein header-Datei muss öffentlich sein, um verwendet werden, in anderen teilen von Projekten. Was Sie brauchen, ist wählen Sie, dass die header-Datei und in der Projekt-Utilities anzeigen. Ändern Sie die Datei von der Projekt - /Privat zu Öffentlich. Siehe Bild unten:
InformationsquelleAutor der Antwort Saad
Eigentlich ein einfacher Weg, um dies zu beheben, bewegen Sie den
#import
- Anweisung an die Spitze der.m
Datei statt (anstatt es in Ihrem.h
header-Datei). Auf diese Weise nicht beklagen, dass es auch für den nicht-modularen-header-Datei. Ich hatte dieses problem, woAllow non-module includes
eingestelltYES
hat NICHT Arbeit für mich, so dass durch verschieben Sie es an die Umsetzung-Datei, es hat aufgehört zu jammern. Dies ist in der Tat die bevorzugte Art, Import von und einschließlich der header-Dateien sowieso. Sobald Sie dies getan haben, diese Einstellung wieder zuNO
funktionieren sollte.Idealerweise sollten wir versuchen, Ziel zu haben
Allow non-module includes
eingestelltNO
. Die Einstellung diesesYES
in den meisten Fällen bedeutet, dass Sie etwas falsch machen. Die Einstellung der übersetzt "Erlauben den Import random-header-Dateien auf der Festplatte, die nicht sonst Teil des Moduls". Dies gilt bis zu einer sehr wenige Anwendungsfälle in der Praxis, und so sollten Sie diese Einstellung stetsNO
(D. H. die Standardeinstellung).InformationsquelleAutor der Antwort strangetimes
"Include non-modular-header-inside-framework-Modul"
Wenn Sie diese Fehlermeldung erhalten ist die Lösung in einigen Fällen können Sie einfach markieren Sie die Datei, die Sie importieren möchten, wie "öffentlichkeit" in der Datei-Inspektor "Target Mitgliedschaft". Der Standardwert ist "Projekt", und wenn auf diese Weise kann es zu diesem Fehler führen. Das war bei mir der Fall, wenn Sie versuchen, importieren von Google Analytic ' s-Header in einen Rahmen, zum Beispiel.
InformationsquelleAutor der Antwort John Bushnell
Ich hatte das gleiche Problem und nichts von oben hat mir geholfen. So ich hoffe meine Antwort ist hilfreich für jemand. In meinem Fall war das problem in ALWAYS_SEARCH_USER_PATHS Einstellung. Wenn es eingestellt war, KEIN Projekt gebaut und funktionierte ok. Aber so weit man das pod erforderlich, es werden JA, ich erhalte eine Fehler
Nach ein paar Tassen Kaffee und den ganzen Tag recherche fand ich heraus, dass nach bekannten Problemen von Xcode 7.1 Beta 2 release notes:
War ich mit XCode 7.3 obwohl, doch scheint dieser bug noch nicht behoben wurde, noch.
InformationsquelleAutor der Antwort iyuna
das gleiche problem verrückt machen.schließlich finde ich die 'import xxx.h' in der Umsetzung statt-Schnittstelle kann das problem beheben.Und wenn Sie Cocoapods-manager Ihr Projekt.Sie können hinzufügen
in Ihrem 'xxx.podspec' - Datei.
InformationsquelleAutor der Antwort 贺彦文
Wenn Sie diese für CocoaPods Ziele fügen Sie diese Zeilen in
Podfile
:InformationsquelleAutor der Antwort k06a
Wenn Sie diese Fehlermeldung sehen, die in einer umbrella-header beim Bau einer dynamischen Rahmenstellen Sie sicher, Sie importieren Sie Ihre Datei als:
#import "MyFile.h"
und nicht als
#import <MyFramework/MyFile.h>
.InformationsquelleAutor der Antwort Misha Karpenko
Im Falle dass, wenn Sie entwickeln Ihre eigenen Rahmen:
WARUM ist das passiert?
Wenn jede von der öffentlichen header-Dateien, die Sie erwähnt haben, in Ihre Modul.modulemap müssen import-Anweisungen, die nicht erwähnt in modulemap, dies wird Ihnen den Fehler. Da versucht wird, importieren Sie einige header nicht deklariert ist modular aufgebaut (im Modul.modulemap), es bricht die Modularität des Frameworks.
WIE kann ich es beheben?
Nur den Kopf, gab den Fehler zu Ihrem Modul.modulemap und wieder bauen!
WARUM NICHT einfach festlegen, dass nicht-modular, JA?
Weil es nicht wirklich eine Lösung hier, mit, dass Sie sagen, Ihr Projekt "dieses framework soll modular, aber das ist es nicht. Verwenden Sie es irgendwie, mir egal." Dies nicht beheben Ihre Bibliothek Modularität problem.
Für mehr Informationen, prüfen Sie diese blog-post oder beziehen sich auf clang docs.
InformationsquelleAutor der Antwort Mert Celik
Dies war ein leidiges Thema für mich. Keine Vorschläge mehr zu helfen schien meinem besonderen Fall, da brauchte ich die "non-modular" - Header in meinem individuellen Datei-header-Datei. Die Arbeit, die ich verwendet wurde kleben die import-Aufruf in der prefix-header-Datei.
InformationsquelleAutor der Antwort Greg
Ich konnte deutlich Dutzende von diesen Fehler bei der Verwendung von Git sauber. Hier ist der Befehl:
git clean -dffx && git reset --hard
InformationsquelleAutor der Antwort Matt Bearson