xcode ld:架构 x86_64 的 8 个重复符号

2023-12-09

我正在 xcode 和 c++ 中使用 GLUT 和 OpenGL 制作游戏。我想在我的游戏中放置一个 3D 模型,这是头文件的一般外观:

unsigned int GunNumVerts = 37812;

float GunVerts [] = {
// f 1/1/1 1582/2/1 4733/3/1
 0.266494348503772, 0.0252334302709736, -0.000725898139236535,
0.265592372987502, 0.0157389511523397, -0.000725898139236535,
0.264890836474847, 0.0182004476109518, -0.00775888079925833,}
float GunNormals [] = {
// f 1/1/1 1582/2/1 4733/3/1
0.986904930120225, -0.0937549933614904, -0.131257990706016,
0.986904930120225, -0.0937549933614904, -0.131257990706016,
0.986904930120225, -0.0937549933614904, -0.131257990706016,}
float GunTexCoords [] = {
// f 1/1/1 1582/2/1 4733/3/1
0.110088, 0.229552,
0.108891, 0.243519,
0.119508, 0.240861,}

我收到此错误:

duplicate symbol _GunNumVerts in: /blah/blah/blah/Mouse.o
/blah/blah/blah/ViewPort.o
ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我试图在我的视口中的显示方法中显示它,如下所示:

glVertexPointer(3, GL_FLOAT, 0, GunVerts);
glNormalPointer(GL_FLOAT, 0, GunNormals);
glTexCoordPointer(2, GL_FLOAT, 0, GunTexCoords);
glDrawArrays(GL_TRIANGLES, 0, GunNumVerts);

我还有另外 7 个重复的符号小短语,但只有一个实际错误。


您在标头中定义了变量。这样每个变量就会出现在每 (8) 个编译单元中。反而declare标题中的变量和define它们位于 .cpp 文件中。

例如:

// Gun.h:
extern unsigned int GunNumVerts;
extern float GunVerts[9];


// Gun.cpp:
unsigned int GunNumVerts;
float GunVerts[9] = {
    // f 1/1/1 1582/2/1 4733/3/1
    0.266494348503772, 0.0252334302709736, -0.000725898139236535,
    0.265592372987502, 0.0157389511523397, -0.000725898139236535,
    0.264890836474847, 0.0182004476109518, -0.00775888079925833};

extern告诉编译器该变量的地址稍后(由链接器)解析。 另外,如果您从不打算在运行时更改这些值,则应将它们声明为const.

/编辑:由于您使用的是 clang,它具有非常好的 C++11 支持,因此您也可以使用constexpr对于这些值。然后它们仅驻留在标头中。然而,了解链接器对于 C++ 开发人员来说非常重要,因此保留最初的建议。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xcode ld:架构 x86_64 的 8 个重复符号 的相关文章

随机推荐

  • 固定与绝对

    因此 我检查了该网站 发现一些问题与我正在寻找的内容很接近 但并不完全相同 我试图弄清楚如何定位元素 以便在滚动 向上 向下 时位置是固定的 但是当浏览器调整大小 向左 向右 时 位置是绝对或相对的 本质上 我想将一个元素放置在距浏览器窗口
  • C#,如何让图片背景透明?

    我有一个图片框 里面有一个png 然而 即使我将背景色设置为透明 它也不是透明的 有什么想法可能是错的吗 Thanks 我也遇到过有关透明图片的问题 你必须通过代码来绘制它 看我的问题图片框问题 EDIT In 绘画事件 包含背景图像的控件
  • 使用迭代器删除对象时出现 IllegalStateException

    我已经被这个错误困扰了一段时间 但我不知道问题出在哪里 我的代码是这样的 ArrayList
  • 使用 Gensim 提取短语时出错

    我正在尝试使用 Gensim 中的短语来获取句子中的二元组 如下所示 from gensim models import Phrases from gensim models phrases import Phraser documents
  • 用 javascript 获取真正的源代码?

    好吧 我对 js 的了解还不够 但是有没有办法用它来获取页面的真正源代码 例如 document body innerHTML 提供了某种 修复 版本 其中格式错误的标签已被删除 我猜想在原始页面上使用 XMLHttpRequest 可能会
  • 按钮背景颜色

    我需要改变background使用 C 代码 Visual Studio 2008 的按钮颜色 我看到有些人建议加入指令 using System Windows Media 我尝试了一下 它触发了此错误 Windows 不存在于names
  • 提取并列出匹配的单元格

    我试图比较包含公司名称的两列 A 和 B 找到任何完全匹配的名称 并将它们列在 C 列中 使用下面的代码 我没有收到错误 但什么也没有发生 如果有人能指出我正确的方向 我将不胜感激 Sub match Dim LastRow As Inte
  • Python——使用 beautifulsoup 抓取“展开”按钮中的内容

    我正在抓取一个黄页来获取一个城市所有物理治疗师的名字 通过该 url 我可以获得 50 名物理治疗师的列表 但是 当我展开页面时 该 url 不会改变 我如何获得完整的名单 这就是我获取罗斯托克市物理治疗师名单的方式 url https w
  • Io 异常:Oracle 云中的 Oracle 错误 ORA-12650

    我一直在为我的数据库计算机 Oracle 11g 使用 Oracle 云 PAAS Linux 服务器 并拥有可以运行所有 Java 应用程序的 Linux 应用程序服务器 假设我有基于 Spring 的 Web 应用程序 可以连接云数据库
  • 如何以编程方式模拟 Flutter 中按钮上的 onTap?

    例如 Update This GestureDetector is embedded inside a third party package that will invoke a series of animation along wit
  • 为什么这段 javascript 代码片段的日志记录为 1? [复制]

    这个问题在这里已经有答案了 在一次采访中 我被要求猜测以下代码片段的输出 var foo 1 function bar foo 10 return function foo bar console log foo 我认为输出将是 10 因为
  • 如何在 iOS 上的 Swift 中使用 Big5 编码

    我正在扫描带有 Big5 编码的汉字的二维码 主页概况 在 Swift 3 中是否有机会正确解码该字符串 我找到了这个Objective C 示例在 GitHub 和这个上那么问题 但是没有kCFStringEncodingBig5 HKS
  • 如何在 Dart 中从 Cloud Firestore 获取随机文档(适用于 Flutter)? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 Lets say I have the following documents inside a Firestore collection How can I randomly get
  • Angular 4 的核心模块中的服务真的是单例提供的吗?

    我试图理解 Angular 4 中的核心模块和单例服务 官方文档 https angular io guide ngmodule 说了以下几件事 UserService 是一个应用程序范围的单例 你不想要每一个 模块有自己单独的实例 但确实
  • 破译 C/C++ 函数指针 typedef 的工具

    我记得曾经看到过一个网站 它破译了复杂的 C typedef 包括函数指针 该函数指针返回指向函数的函数指针 该函数返回一个数组 它将这些定义转换为可读的英文文本 指向函数的指针 返回 int 指针数组 采用 long 和回调函数 采用 i
  • Spark 和 Yarn 的资源分配

    我在纱线客户端模式下使用 Zeppelin 0 7 3 和 Spark 2 3 我的设置是 Spark spark driver memory 4096m spark driver memoryOverhead 3072m spark ex
  • Keras ValueError:ValueError:检查目标时出错:预期dense_4具有形状(无,2)但得到形状为(2592,1)的数组Python3

    我在尝试在 Keras 2 0 8 Python 3 6 1 和 Tensorflow 后端中训练模型时遇到问题 错误信息 ValueError 检查目标时出错 预期dense 4具有形状 无 2 但得到形状为 2592 1 的数组 X t
  • 在 Spring 3.2 中禁用路径变量中的空格修剪

    默认情况下 Spring 会修剪用作路径变量的字符串中的前导 尾随空格 我发现这是因为修剪标记标志设置为true默认情况下蚂蚁路径匹配器 但我不知道如何将该标志设置为false 提供我自己的请求映射处理程序映射豆使用蚂蚁路径匹配器我将其设置
  • C 中这个表达式 (char *) 是什么意思?

    对 C 非常陌生 我想我只是勉强掌握了指针的概念 但语法有点令人困惑 所以我很难理解这个表达式的含义x char a means 其余功能供参考 include
  • xcode ld:架构 x86_64 的 8 个重复符号

    我正在 xcode 和 c 中使用 GLUT 和 OpenGL 制作游戏 我想在我的游戏中放置一个 3D 模型 这是头文件的一般外观 unsigned int GunNumVerts 37812 float GunVerts f 1 1 1