我是Objective-C的新手,在使用C++和模板時有點生疏,我不確定爲什麼我有這個鏈接錯誤。XCode 4.2 Lion中的Objective-C++/C++鏈接錯誤(iOS產品)
我有一個包含類似於這些定義一個頭文件:
struct Info {
std::string name;
};
typedef std::map<std::string, Info> InfoMap;
void Validate(InfoMap* infoMap);
@interface InfoValidator : NSObject
{
}
+(InfoValidator*) getInstance;
-(void) validate:(InfoMap*)infoMap;
@end
我也有一個包含了(全球)validate()方法的定義如下一個.mm文件:
void Validate(InfoMap* infoMap)
{
[[InfoValidator getInstance] validate:infoMap];
}
當我打電話驗證()從一個C++類(在.mm文件中定義)時,收到以下錯誤:
Undefined symbols for architecture armv7:
Validate(std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Info, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, > std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, ?> std::allocator<char> > const, Info> > >*)",
referenced from:
ItemInterface::ValidateItems(int, char const**)in iteminterface.o
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
該文件已被添加到項目中,並且它是我得到的唯一鏈接錯誤。謝謝你的幫助。
是的,它無法找到代碼中沒有的符號'Market_Validate'。 – trojanfoe
這是名稱剝離過程中的錯誤。我已經編輯它現在是正確的。 – n8n8baby