我最近在我的类中添加了一些openfeint代码,并将它们更改为.mm
突然间,我发现在构建时在目标文件中找到重复符号的错误。
ld:复制符号_audioPlayer,用blah blah /Objects-normal/i386/Stage2.o和/ Users / blah blah .build / Debug-iphonesimulator / blah.build / Objects-normal / i386 / Stage1.o
为什么突然导致此错误?究竟是什么错误?
我在不同的类中有相同名称的变量,应该是个问题吗?
由于
答案 0 :(得分:3)
您可能在全局范围内声明了两个具有相同名称的变量(而不是在接口内部),并且链接器正在抱怨这一点。
答案 1 :(得分:3)
如果导入.m文件而不是.h,也会发生此错误。
#import "SomeClass.m"
答案 2 :(得分:1)
简短的回答是你可以使用gcc的命令行参数来抑制此错误: -Wl, - 允许-多定义
答案 3 :(得分:1)
如果您在.mm文件中实施如下方法,则会出现duplicate symbol error
。
#import <Foundation/Foundation.h>
class CppTestOne
{
public:
void Test();
// {
// NSLog(@"Hello C Plus Plus");
// }
};
void CppTestOne::Test()
{
NSLog(@"Hello C Plus Plus");
}
然后你可以通过
实现你的方法#import <Foundation/Foundation.h>
class CppTestOne
{
public:
void Test()
{
NSLog(@"Hello C Plus Plus");
}
};
//void CppTestOne::Test()
//{
// NSLog(@"Hello C Plus Plus");
//}
此错误的详细信息不清楚