gpt4 book ai didi

ios - 链接器命令失败,退出代码 1 : duplicate symbol - no . m 文件

转载 作者:行者123 更新时间:2023-11-28 17:54:05 27 4
gpt4 key购买 nike

我在其他帖子中看到过这个问题,但在我的例子中,我使用的是包含球体顶点数据的 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 中更改它:

#define sphereNumVerts 2280
extern float sphereVerts[sphereNumVerts];

并添加一个包含sphereVerts定义的实现文件(sphere.m):

#import "sphere.h"

float sphereVerts[sphereNumVerts] = {
0.0743889747124915, -0.49384436095363, -0.0241703260695731,
...
};

顺便说一句,对于 float 来说,这些数字看起来很大;你确定你不想 double 吗?

(编辑:我之前的建议是错误的;您也会在头文件中使用 const 获得重复的符号。我已将其更改为 #define)。

关于ios - 链接器命令失败,退出代码 1 : duplicate symbol - no . m 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20094475/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com