gpt4 book ai didi

objective-c - 你如何在 Xcode 之外编译和运行 objective-c 文件?

转载 作者:行者123 更新时间:2023-12-02 00:46:27 24 4
gpt4 key购买 nike

我尝试在终端中使用 gcc 运行多个用 Xcode 编写的 HelloWorld 文件。为简洁起见,这是 TutorialsPoint 中的一个示例,位于名为 myStandaloneHelloWorld.m 的独立文件中:

#import <Foundation/Foundation.h>

@interface SampleClass:NSObject
- (void)sampleMethod;
@end

@implementation SampleClass

- (void)sampleMethod{
NSLog(@"Hello, World! \n");
}

@end

int main()
{
/* my first program in Objective-C */
SampleClass *sampleClass = [[SampleClass alloc]init];
[sampleClass sampleMethod];
return 0;
}

它是在 Xcode 中编译的,但是当 gcc myStandaloneHelloWorld.m 在终端中运行时,会产生以下错误列表:

Undefined symbols for architecture x86_64:
"_NSLog", referenced from:
-[SampleClass sampleMethod] in myStandaloneHelloWorld-0af75e.o
"_OBJC_CLASS_$_NSObject", referenced from:
_OBJC_CLASS_$_SampleClass in myStandaloneHelloWorld-0af75e.o
"_OBJC_METACLASS_$_NSObject", referenced from:
_OBJC_METACLASS_$_SampleClass in myStandaloneHelloWorld-0af75e.o
"___CFConstantStringClassReference", referenced from:
CFString in myStandaloneHelloWorld-0af75e.o
"__objc_empty_cache", referenced from:
_OBJC_METACLASS_$_SampleClass in myStandaloneHelloWorld-0af75e.o
_OBJC_CLASS_$_SampleClass in myStandaloneHelloWorld-0af75e.o
"_objc_msgSend", referenced from:
_main in myStandaloneHelloWorld-0af75e.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我知道还有其他框架和语法(例如,在 Xcode 中运行的语法非常不同的 Xcode 命令行工具),但是在终端中运行的这种语法有什么问题?

最佳答案

您的程序依赖于 Foundation 框架。正如您必须告诉编译器(或链接器)您的程序需要的库一样,您也必须告诉它关于框架的信息。

使用:

gcc myStandaloneHelloWorld.m -framework Foundation

关于objective-c - 你如何在 Xcode 之外编译和运行 objective-c 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43438056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com