Ios 链接器命令失败,退出代码为1:重复符号-无.m文件
我在其他文章中也看到过这个问题,但在我的例子中,我使用了一个sphere.h文件,其中包含球体顶点的数据,也就是我的游戏项目的3D模型。我将sphere.h文件导入objective-C类,如下所示:Ios 链接器命令失败,退出代码为1:重复符号-无.m文件,ios,objective-c,xcode,opengl-es,Ios,Objective C,Xcode,Opengl Es,我在其他文章中也看到过这个问题,但在我的例子中,我使用了一个sphere.h文件,其中包含球体顶点的数据,也就是我的游戏项目的3D模型。我将sphere.h文件导入objective-C类,如下所示: #import "SceneEnergyGlobe.h" #import "sphere.h" @interface SceneEnergyGlobe() { } @property (strong, nonatomic) GLKTextureInfo *textureInfo0;
#import "SceneEnergyGlobe.h"
#import "sphere.h"
@interface SceneEnergyGlobe() {
}
@property (strong, nonatomic) GLKTextureInfo *textureInfo0;
@end
.....
当我编译我的项目时,我收到这个编译错误。我怎样才能解决这个问题
以下是sphere.h的内容:
#ifndef SPHERE_HEADER
#define SPHERE_HEADER
unsigned int sphereNumVerts = 2280;
float sphereVerts [] = {
0.0743889747124915, -0.49384436095363, -0.0241703260695731,
0.190555012144643, -0.979722062440628, -0.0619150039460291,
0.000000, 0.95,
0.0632787269334132, -0.49384436095363, -0.0459747512867777,
0.162096012330563, -0.979722074526971, -0.11776900895863,
0.050000, 0.95,
0.125000004921036, -0.475528075643002, -0.0908176095396332,
0.269869905435848, -0.942722669663907, -0.196071931295133,
.....
对于包含sphere.h的每个实现文件.m,将创建顶点数组的新副本。当这些实现文件链接在一起时,会出现重复符号错误 最好的方法是在sphere中对此进行更改。h:
#ifndef SPHERE_HEADER
#define SPHERE_HEADER
unsigned int sphereNumVerts = 2280;
float sphereVerts [] = {
0.0743889747124915, -0.49384436095363, -0.0241703260695731,
0.190555012144643, -0.979722062440628, -0.0619150039460291,
0.000000, 0.95,
0.0632787269334132, -0.49384436095363, -0.0459747512867777,
0.162096012330563, -0.979722074526971, -0.11776900895863,
0.050000, 0.95,
0.125000004921036, -0.475528075643002, -0.0908176095396332,
0.269869905435848, -0.942722669663907, -0.196071931295133,
.....
并添加一个包含sphereVerts定义的实现文件sphere.m:
顺便说一句,这些看起来像大数字的浮动;你确定不想要双份的吗
编辑:我以前的建议是错误的;在头文件中使用const也会得到重复的符号。我已将其更改为定义。在.h文件中创建和初始化变量是一个非常糟糕的主意 您是否声明了具有全局作用域的变量,因此是@interface/@end块的外部变量?显示更多代码。这还不足以帮助您。但还有一件事,类名应该是大写的球体。如果调用include Sphere.h会怎么样?我包含了Sphere.h的部分内容。它不是Objective-C类当我有另一个Objective-C类并且我也导入了sphere.h文件时,问题就发生了
#import "sphere.h"
float sphereVerts[sphereNumVerts] = {
0.0743889747124915, -0.49384436095363, -0.0241703260695731,
...
};