构建错误:多重定义

Posted

技术标签:

【中文标题】构建错误:多重定义【英文标题】:Build error: multiple definition of 【发布时间】:2012-10-08 20:46:31 【问题描述】:

我有一个头文件,其中包含一个 unsigned char 数组,它实际上是一个 ttf 字体文件。 在 .c 文件中,我可以加载字体并使用它(我在 .c 文件中包含 ttf 头文件),但问题是当我尝试在另一个 c 文件中使用它时,我得到了这 2 个错误之一;

我可以得到的第一个错误是我的数组未声明。

所以我包含了包含我的数组的头文件,我得到了第二个错误;多重定义...

有人可以帮忙吗?我不明白。 我希望我的解释清楚,对我的近似英语感到抱歉:)

【问题讨论】:

【参考方案1】:

使用extern

在你的头文件中,制作:

extern unsigned char my_array[];

正好一个.c文件中,定义了数组。

【讨论】:

extern unsigned char my_array[]; 也许? 成功了 :D 非常感谢!我会在 5 分钟内标记你的答案! @microbe - 是的。如果您在头文件中定义了该数组,您将获得该数组的尽可能多的定义,因为.c 文件包含该头文件。你只需要一个定义。因此,在头文件中使用 extern 将解决您的问题 - 所有包含它的 .c 文件都将看到该数组,并且它只会被定义一次。

以上是关于构建错误:多重定义的主要内容,如果未能解决你的问题,请参考以下文章

来自 AuthorizationHandler (ASP.NET Core) 的自定义重定向

C++:“mainCRTStartup”错误等的多重定义

Linux自动化运维之Cobbler(自定义重装)

构建文件夹中的 Qt 创建者多重定义

链接器多重定义错误:为啥 <thread> 似乎定义了我的函数?

使用 MatLab dll 时出现 C++ 错误:找到一个或多个多重定义符号