Ios 链接器命令失败,退出代码为1:重复符号-无.m文件

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;

我在其他文章中也看到过这个问题,但在我的例子中,我使用了一个sphere.h文件,其中包含球体顶点的数据,也就是我的游戏项目的3D模型。我将sphere.h文件导入objective-C类,如下所示:

 #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,
    ...
};