Objective c 关于GCC和ObjectiveC代码以及Cygwin的帮助
是否有可能在cygwin下使用GCC正确构建目标c代码 我有下面的应用程序,应该可以在Mac环境下工作,但无法获得使用gcc的最基本的东西。我还需要更多的图书馆吗Objective c 关于GCC和ObjectiveC代码以及Cygwin的帮助,objective-c,windows,winapi,gcc,cygwin,Objective C,Windows,Winapi,Gcc,Cygwin,是否有可能在cygwin下使用GCC正确构建目标c代码 我有下面的应用程序,应该可以在Mac环境下工作,但无法获得使用gcc的最基本的东西。我还需要更多的图书馆吗 #import "HelloWorldApp.h" int main(int argc, char *argv[]) { return 0; } // End of the // @interface Car { int test; } //The registration is a read-only fie
#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
您是否尝试过直接从命令行而不是通过makefile运行gcc命令 找到此引用: 直接取自 编译Objective-C Objective-C代码可以使用GNUC编译器gcc进行编译。Objective-C接口文件通常以扩展名.h标记,如列表.h所示。实现文件通常由扩展名.m标记,如List.m中所示。实现文件应#导入其相应的接口文件。主程序还应该#导入它使用的所有类的接口文件。 通常,您需要编译单独实现类的文件。例如,要编译List.m,请使用以下命令:
gcc -c -Wno-import List.m
gcc -o prog -Wno-import List.o main.o -lobjc
c开关告诉编译器生成一个对象文件List.o,该文件随后可以链接到您的程序中。对每个实现文件和主程序执行此操作
如果代码中有#import语句,-Wno import开关告诉编译器不要发出警告。出于某种原因,Richard Stallman(GNU项目创始人)不喜欢“导入”结构
当您准备编译程序时,您可以再次使用gcc链接类的所有实现。例如,要编译文件List.o和main.o,可以使用以下命令:
gcc -c -Wno-import List.m
gcc -o prog -Wno-import List.o main.o -lobjc
-o prog告诉gcc创建一个名为prog的可执行程序(如果您没有指定,它将默认为a.out)
请注意,在将Objective-C与gcc链接时,需要使用-lobjc开关指定Objective-C库。如果gcc报告错误,请与系统管理员联系,以确保Objective-C库和头文件(objc/Object.h)是在gcc构建时安装的。我认为这是因为您使用的是Objective-C2.0,这是苹果开发的一个私有扩展,他们没有为“标准”FSF gcc做出贡献。因此,您的mingw编译器(不是基于苹果的,而是基于FSF的)不理解新的语法,比如属性。@Malaxeur-你一针见血。我刚刚在电脑上用ObjC进行了一番尝试,遇到了一个确切的问题-我的路径指向一个v3.x gcc编译器。我切换到了4.x版本,瞧 还值得注意的是,如果拼写“implementation”错误,也会弹出“trassed”@“错误,这有点误导
无论如何,感谢您的帮助。我想补充一点,您应该注意gcc版本。我必须运行gcc版本4(cygwin安装了3作为我的主要gcc版本)让objective c编译。我也用谷歌搜索了一下,这就是我的Makefile中的内容。但是,代码仍然没有编译。我猜是因为objective-c不是真正的objective。这里没有objective-c的标准。基本上有GNU的版本和Apple的版本(可能还有一些其他很少使用的版本)GNU的版本已经过时,消息来源充斥着“这是一个黑客”的评论。