我在.mm文件中制作了一个非常简单的Objective-C/C程序,但我不知道如何链接Objective-C库/框架.我只需要Foundation框架.我怎样才能做到这一点?我不想在Xcode中这样做,因为Xcode总是创建一个包含项目文件的整个文件夹,然后将产品隐藏在一个难以找到的文件夹中,我觉得它是用于单文件程序的大量内存.
码:
#include#import NSString* charToNSString(char * c){ return [NSString stringWithUTF8String:c]; } const char* NSStringToChar(NSString *str){ return [str UTF8String]; } int main(int argc, char * argv[]){ return 0; }
编译: gcc file.mm
输出:
Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_NSString", referenced from: objc-class-ref in file-4bd3e4.o "_objc_msgSend", referenced from: charToNSString(char*) in file-4bd3e4.o NSStringToChar(NSString*) in file-4bd3e4.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
Inder Kumar .. 7
$ gcc -framework Foundation main.mm
虽然上面的命令工作得很好,但我建议你创建Makefile
$vim Makefile
粘贴下面的内容
CC=gcc FRAMEWORKS:= -framework Foundation SOURCE=main.mm OUT=-o main all: $(CC) $(SOURCE) $(FRAMEWORKS) $(OUT) # ^ this is a tab not spaces, if you give spaces here it will through error :*** missing separator
然后运行
$ make
看看这个关于Makefile的简单教程
$ gcc -framework Foundation main.mm
虽然上面的命令工作得很好,但我建议你创建Makefile
$vim Makefile
粘贴下面的内容
CC=gcc FRAMEWORKS:= -framework Foundation SOURCE=main.mm OUT=-o main all: $(CC) $(SOURCE) $(FRAMEWORKS) $(OUT) # ^ this is a tab not spaces, if you give spaces here it will through error :*** missing separator
然后运行
$ make
看看这个关于Makefile的简单教程