Helfen Sie mit GCC und ObjectiveC-code und Cygwin
Ist es möglich, zu bauen objective-c-code korrekt mit GCC unter cygwin.
Habe ich die folgende Anwendung, sollte die Arbeit an einer Mac-Umgebung, kann aber nicht die einfachsten Sachen auf die Arbeit mit gcc. Gibt es noch weitere Bibliotheken, die ich brauche zu haben.
#import "HelloWorldApp.h"
int main(int argc, char *argv[]) {
return 0;
} //End of the //
@interface Car
{
int test;
}
//The registration is a read-only field, set by copy
@property int (readonly, copy) test;
//the driver is a weak reference (no retain), and can be modified
//@property Person* (assign) driver;
@end
CC=gcc
CXX=gcc-g++
LD=$(CC)
CFLAGS=
LDFLAGS=-lobjc
all: HelloWorld
HelloWorld: HelloWorld.o
$(LD) $(LDFLAGS) -o $@ $^
%.o: %.m
$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
clean:
rm -rvf *.o HelloWorld HelloWorld.exe
Fehler:
gcc -c HelloWorld.m -o HelloWorld.o
In file included from HelloWorld.m:6:
HelloWorldApp.h:19: error: stray '@' in program
HelloWorldApp.h:19: error: parse error before "int"
make: *** [HelloWorld.o] Error 1
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, es liegt daran, dass man mit Objective-C 2.0, das ist eine private Erweiterung, die Apple entwickelt und dass Sie nicht dazu beitragen, wieder auf den "standard", FSF-GCC. So, Ihr mingw compiler (die nicht auf Apple, sondern auf der FSF) versteht das nicht eine neue syntax wie Eigenschaften.
@ Malaxeur - Sie treffen den Nagel auf den Kopf. Ich habe gerade heftig über mit ObjC am PC und hatte das exakte problem - mein Weg war und zeigte auf ein v3.x gcc compiler. Ich wechselte auf die 4.x-version, und voila!
Es ist auch erwähnenswert, dass die "stray '@'" Fehlermeldung erscheint auch, wenn Sie Zauber 'Umsetzung' falsch, das ist ein wenig irreführend.
Trotzdem, vielen Dank für die Hilfe.
Haben Sie versucht, läuft der gcc-Befehle direkt von der Kommandozeile statt über makefile?
Fand diesen Hinweis:
Direkt aus http://www.cs.indiana.edu/classes/c304/ObjCompile.html
Kompilieren Objective-C
Objective-C-code kann kompiliert werden mit dem GNU-C-compiler gcc. Objective-C-Schnittstelle-Dateien in der Regel gekennzeichnet durch die Erweiterung .h wie in der Liste.h. Umsetzung Dateien sind in der Regel gekennzeichnet durch die Erweiterung .m wie in der Liste.m. Die Umsetzung-Datei sollte #import Ihrer entsprechenden interface-Datei. Ihr Hauptprogramm sollte auch #importieren Sie die interface-Dateien für alle Klassen, die es verwendet.
In der Regel werden Sie wollen, kompilieren Sie die Dateien, die der Umsetzung Ihrer Klassen getrennt. Zum Beispiel, kompilieren Liste.m, verwenden Sie den folgenden Befehl ein:
Die Option-c sagt dem compiler, erzeugt eine Objekt-Datei-Liste.o, die dann später verbunden werden, in Ihrem Programm. Tun Sie dies für jede Ihrer Dateien Implementierung und Rahmenprogramm.
Den -Wno-import-Schalter weist den compiler nicht um eine Warnung zu geben, wenn Sie eine #import-Anweisung in Ihrem code. Für einige Grund, Richard Stallman (GNU-Projekt-Gründer) nicht wie die #import-Bau.
Wenn Sie fertig sind, kompilieren Sie Ihr Programm, können Sie eine Verknüpfung alle Implementierungen der Klassen mit gcc wieder. Zum Beispiel, kompilieren Sie die Liste.o und main.o könnten Sie den folgenden Befehl ein:
- O prog sagt gcc zu erstellen, der ein ausführbares Programm mit dem Namen prog (wenn diese nicht angegeben, wird standardmäßig ein.aus.
Beachten Sie, dass beim verknüpfen von Objective-C mit gcc, müssen Sie dem Objective-C-Bibliothek, indem Sie die-lobjc wechseln. Wenn gcc einen Fehler meldet, Kontaktieren Sie Ihren system-administrator, um sicherzustellen, dass die Objective-C-Bibliothek und header-Dateien (objc/Object.h) installiert wurden, wenn gcc gebaut wurde.