jMa*_*Man 2 xcode gcc objective-c
我尝试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;
}
Run Code Online (Sandbox Code Playgroud)
它在 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)
Run Code Online (Sandbox Code Playgroud)
我知道还有其他框架和语法(例如,Xcode 命令行工具在 Xcode 中运行的语法非常不同),但是在终端中运行的这种语法有什么问题吗?
您的程序依赖于 Foundation 框架。正如您必须告诉编译器(或链接器)您的程序需要的库一样,您也必须告诉它有关框架的信息。
使用:
gcc myStandaloneHelloWorld.m -framework Foundation
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |