错误Xcode 6上的'架构x86_64的未定义符号'对于Objective C
我开始学习使用Xcode 6的Objective C,所以我对此很陌生。我遵循Web上的一些教程并尝试一些示例。我使用的是Mac OS X 10.9。我没有得到像这样的错误。我已经尝试了很多客观的C代码。这里我附上了我的编码。错误Xcode 6上的'架构x86_64的未定义符号'对于Objective C
的main.m
#import <Foundation/Foundation.h>
#import "CarUtilities.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSDictionary *makesAndModels = @{
@"Ford":@[@"Explorer",@"F-150"],
@"Honda":@[@"Accord",@"Civic",@"Pilot"],
@"Nissan":@[@"370Z",@"Altima",@"Versa"],
@"Porsche":@[@"911 Trubo",@"Boxter",@"Cayman S"]
};
NSString *randomCar = CUGetRandomMakeAndModel(makesAndModels);
NSLog(@"Selected a %@",randomCar);
}
return 0;
}
//CarUtilities.m
#进口 #进口 “CarUtilities.h”
//private function declaration
static id getRandomItemFromArray(NSArray *anArray);
//公共funtion实施
NSString *CUGetRandomMake(NSArray *makes){
return getRandomItemFromArray(makes);
}
NSString *CUGetRandomModel(NSArray *models){
return getRandomItemFromArray(models);
}
NSString *CUGetRandomMakeAndModel(NSDictionary *makesAndModels){
NSArray *makes = [makesAndModels allKeys];
NSString *randomMake = CUGetRandomeMake(makes);
NSArray *models = makesAndModels[randomMake];
NSString *randomModel = CUGetRandomeModel(models);
return [randomMake stringByAppendingFormat:@" %@",randomModel];
}
//private function implementation
static id getRandomItemFromArray(NSArray *anArry){
int maximum = (int) [anArry count];
int randomIndex = arc4random_uniform(maximum);
return anArry[randomIndex];
}
CarUtilities.h
#import <Foundation/Foundation.h>
NSString *CUGetRandomeMake(NSArray *makes);
NSString *CUGetRandomeModel(NSArray *models);
NSString *CUGetRandomMakeAndModel(NSDictionary *makesAndModels);
当我尝试运行此代码我有以下错误。对于架构x86_64的
Ld /Users/samudrjkumara/Library/Developer/Xcode/DerivedData/CarUtilities-govahlvyjxsayfaxlqircwemwocg/Build/Products/Debug/CarUtilities normal x86_64 cd /ObjectiveC/CarUtilities export MACOSX_DEPLOYMENT_TARGET=10.9 /Applications/Xcode6-Beta6.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode6-Beta6.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -L/Users/samudrjkumara/Library/Developer/Xcode/DerivedData/CarUtilities-govahlvyjxsayfaxlqircwemwocg/Build/Products/Debug -F/Users/samudrjkumara/Library/Developer/Xcode/DerivedData/CarUtilities-govahlvyjxsayfaxlqircwemwocg/Build/Products/Debug -filelist /Users/samudrjkumara/Library/Developer/Xcode/DerivedData/CarUtilities-govahlvyjxsayfaxlqircwemwocg/Build/Intermediates/CarUtilities.build/Debug/CarUtilities.build/Objects-normal/x86_64/CarUtilities.LinkFileList -mmacosx-version-min=10.9 -fobjc-arc -fobjc-link-runtime -Xlinker -dependency_info -Xlinker /Users/samudrjkumara/Library/Developer/Xcode/DerivedData/CarUtilities-govahlvyjxsayfaxlqircwemwocg/Build/Intermediates/CarUtilities.build/Debug/CarUtilities.build/Objects-normal/x86_64/CarUtilities_dependency_info.dat -o /Users/samudrjkumara/Library/Developer/Xcode/DerivedData/CarUtilities-govahlvyjxsayfaxlqircwemwocg/Build/Products/Debug/CarUtilities
未定义符号: “_CUGetRandomeMake”,从引用:在CarUtilities.o “_CUGetRandomeModel” _CUGetRandomMakeAndModel,从引用:在CarUtilities.o`` LD _CUGetRandomMakeAndModel:符号(S)未找到架构x86_64 clang:错误:链接器命令失败,退出代码1(使用-v查看调用)
我在哪里出错了。请为此需要帮助,因为我是Xcode和Objective C的新手。
我认为问题与项目构建设置有关。
在你的目标构建设置做检查,如果在架构子视图:
"Architecture" includes all supported architectures. (including arm64)
"Build active architecture only": NO.
没有足够的回购添加图片。所以请在这个帖子查看图像:
错别字:
NSString *CUGetRandomMake(NSArray *makes){
return getRandomItemFromArray(makes);
}
...
NSString *randomMake = CUGetRandomeMake(makes);
// ^
同为CUGetRandomModel()
。
非常感谢。它解决了错误。 – samudra 2014-09-21 18:29:12
非常感谢您的回复。 – samudra 2014-09-21 18:29:53