extern导致链接器错误
似乎几乎是this question的副本,但答案并没有解决问题。extern导致链接器错误
first.h
extern PlanningDocumentService *folderService;
first.m
#import first.h
- (void)serviceDefinition
{
PlanningDocumentService *folderService = [_myDocumentViews objectAtIndex:[_gridView indexOfSelectedItem]];
detail.service = folderService;
}
second.h
#import first.h
second.m
#import second.h
+(NSArray*)getDocumentData
{
NSString *passedCaption = folderService.caption;
}
给出了错误:
Undefined symbols for architecture i386:
"_folderService", referenced from:
+[GenericService getDocumentData] in GenericService.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我没有声明或定义除上述文件以外的任何地方folderService
。 欢迎任何想法。
您需要定义folderService
有全局范围:
first.m:
#import "first.h"
PlanningDocumentService *folderService = nil;
- (void)serviceDefinition
{
folderService = [_myDocumentViews objectAtIndex:[_gridView indexOfSelectedItem]];
detail.service = folderService;
}
完美工作,谢谢! – Robert 2013-02-15 15:30:08
PlanningDocumentService *folderService
内- (void)serviceDefinition
使局部变量的函数,而不是全球性的。但extern PlanningDocumentService *folderService
声明了全局变量的存在,这是从未定义的。
也砰的一声。如果允许的话,会接受这两个答案。 =) 谢谢。 – Robert 2013-02-15 15:35:43
其中是folderService创建?你只是把外部,但你实际上必须创建变种 – Ultrakorne 2013-02-15 15:22:45