2016-05-17 7 views
0

Mein Projekt wurde mit Objective-C entwickelt. Ich habe ein Drittanbieter-Framework in Verwendung (ich nenne es thirdparty hier. Sorry, ich kann den Namen des Drittanbieters nicht nennen).iOS Unit Test mit OCMock static library (das -ObjC Flag Problem)

Jetzt möchte ich Einheit Testcode für mein Projekt schreiben. Ich verwende OCMock static library & Ich folgte seiner instruction, um diese statische Bibliothek zu meinem iOS-Projekt einzurichten. Wie Sie in ihrer Anweisung sehen, fordert es mich auf, die -ObjC Linker-Flag in Build-Einstellungen -> Andere Linker Flags hinzuzufügen.

Aber wenn ich mein Projekt bauen erhalte ich die folgenden Fehler:

ld: warning: Auto-Linking supplied '../thirdparty.framework/thirdparty', 
missing required architecture i386 in file ../thirdparty.framework/thirdparty (2 slices) 

Aber wenn ich die zusätzlichen -ObjC Linker Flagge von Build-Einstellungen entfernen -> Andere Linker Flags, der obige Fehler verschwindet , mein Projekt kann dann erfolgreich gebaut werden (aber wenn mein Komponententest ausgeführt wird, löst die OCMock-Bibliothek einen Fehler aus, der mich dazu auffordert, das -ObjC Linker-Flag zurück hinzuzufügen)

Antwort

1

In Bezug auf den Fehler gehe ich davon aus, dass Ihre 3. Bibliotheken nicht t unterstützt i386-Architektur. Ich nehme an, dass Sie dieses Problem beim Ausführen auf Simulator erfahren haben. Sie sollten erneut überprüfen, ob Ihre Bibliotheken die Zielarchitektur unterstützen. Hier ist das Skript

xcrun -sdk iphoneos lipo -info $(FILENAME) 

Das Ergebnis zeigt, wie diese

enter image description here

So überprüfen denke ich das Problem nicht aus OCMock statischen lib kommen könnte, solange es i386-Architektur unterstützt. Sie sollten erneut Ihre Konfiguration oder andere Bibliotheken überprüfen.

+0

danke, also, wenn meine 3. lib i386 architectue nicht unterstützt, und wenn ich nicht in der Lage bin, die Unterstützung dieser 3. lib hinzuzufügen, dann kann ich nicht viel tun, um dieses Problem zu beheben, richtig? –

+0

Soweit ich weiß, könnten wir nicht mehr tun, wenn Sie originale Projekte von 3rd Bibliotheken haben und selbst bauen, oder um Unterstützung von 3rd Teams bitten. – HDT