-1

我刚刚从 Xcode 2 跳转到 Xcode 4,发现标头导入不起作用。例如,如果我创建了一个定义单个变量 foo 的头文件,然后我将头文件导入到 Class Ah 和 Class Bh 中,那么我的应用程序无法编译并出现链接器错误:

duplicate symbol _foo in:
/Users/myself/Library/Developer/Xcode/DerivedData/Testcrap-grlgbsgwysjmmzagvozfywcwafar/Build/Intermediates/Testcrap.build/Debug/Testcrap.build/Objects-normal/x86_64/Class A.o
/Users/myself/Library/Developer/Xcode/DerivedData/Testcrap-grlgbsgwysjmmzagvozfywcwafar/Build/Intermediates/Testcrap.build/Debug/Testcrap.build/Objects-normal/x86_64/Class B.o
ld: 1 duplicate symbol for architecture x86_64
-clang: error: linker command failed with exit code 1 (use -v to see invocation)

怎么回事?就像 Xcode 4 甚至不知道导入是什么意思。我该如何解决?

4

2 回答 2

0

尝试确保您没有#import/#include 任何代码文件,确保它们都在右侧列中被选中以进行构建,并确保您不会在稍后阶段与它们进行外部链接。

如果您绝对需要导入/包含代码文件,请取消选中右侧栏中的构建文件。

希望这可以帮助。

于 2013-07-21T23:36:21.707 回答
0

似乎一切都是合法的,在这种情况下应该有一个重复符号错误。您在两个不同的翻译单元中定义相同的符号。问题是为什么 XCode 2 没有抱怨它(可能是过时的编译器/链接器中的一些错误,嗯?)。无论如何要解决这种问题,您应该在标头(通过外部)中声明您的变量并在源文件中定义它。看看这个问题的详细信息。 有关声明定义
之间的差异,请查看此处

于 2013-07-22T05:30:08.897 回答