ZBLOG

1>正在链接对象 1>/usr/bin/ld : error : /home/ztl/projects/HDMIIN/obj/ARM64/Debug/ShowGL.o:/home/ztl/projects/HDMIIN/ShowGL.h:14: multiple definition of `vertexShaderSource'; /home/ztl/projects/HDMIIN/obj/ARM64/Debug/main.o:/home/ztl/projects/HDMIIN/Show...

这个错误提示表明在链接阶段出现了“多重定义”(multiple definition)的问题。具体来说,你在多个源文件中定义了同样的变量,导致链接器无法确定使用哪个定义。

根据错误信息,这两个变量 vertexShaderSourcefragmentShaderSource 都是在 ShowGL.h 文件中被定义的,且在多个源文件(如 ShowGL.omain.o)中都有引用。这种情况下,你应该将这些变量的定义改为声明,并在一个源文件中进行实际定义。可以按照以下步骤解决这个问题:

解决方法

  1. 修改头文件(ShowGL.h):

将变量的定义更改为声明。在头文件中,去掉初始值赋值,添加 extern 关键字,如下所示:

   // ShowGL.h
   extern const char* vertexShaderSource;
   extern const char* fragmentShaderSource;
  1. 在某个源文件(如 ShowGL.cpp)中进行实际定义:

在一个源文件里提供这两个变量的实际定义和初始化,例如:

   // ShowGL.cpp
   #include "ShowGL.h"

   const char* vertexShaderSource = R"(
       // Vertex shader code here...
   )";

   const char* fragmentShaderSource = R"(
       // Fragment shader code here...
   )";
  1. 确保其他源文件只包含头文件:

    在任何需要使用这些变量的其他源文件(例如 main.cpp),只需包含头文件,不要再重新定义它们。

通过这种方式,可以避免多重定义的问题,同时保证各个模块可以共享这些常量。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=7625

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?