This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28388D:错误#10056符号"..."重新定义:首先在"中定义... .obj"在"中红色... .obj"

Guru**** 1821780 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1423111/tms320f28388d-error-10056-symbol-redefined-first-defined-in-obj-redfined-in-obj

器件型号:TMS320F28388D

工具/软件:Code Composer Studio 12.

您好!

我的问题不是微控制器特定的、而是关于头文件、项目结构和我遇到的错误的通用编程问题。

到目前为止我已了解了有关结构的内容:头文件(.h)包含变量和函数的声明、源文件(.c)包含变量和函数的定义。 源文件包含头文件的内容、其中包含变量和函数的声明、它们在后面使用#include。 由于各种源文件可能包含同一头文件、头文件包含以下代码以避免多个声明:

#ifndef SOMETHING
#define SOMETHING
// code
#endif

我正在尝试将 lwIP 库实现到我自己的项目中 (我知道该示例)。 我已将完整的 lwIP 文件夹复制到项目中。 在构建过程中、我收到多个这样的错误:

#10056 symbol "autoip_arp_reply" redefined: first defined in "./lwip/lwip-2.1.2/src/core/ipv4/autoip.obj"; redefined in "./lwip/utils/lwiplib.obj"

./lwip/lwip-2.1.2/src/core/ipv4/autoip.c包含的定义autoip_arp_reply()、但两个文件都包含./lwip/lwip-2.1.2/src/include/autoip.h、其中包含的声明autoip_arp_reply()。 和autoip.h包含如上所示的结构以避免多个声明。 由于这些原因、我不理解该错误消息。 首先、它应该"重新声明"、而不是"重新定义"、甚至不应该发生这种情况、因为#ifndef代码应该防止这种情况发生。

我的错误在哪里? 该错误会如何发生? 我想大致了解这一点、不仅是为了解决这一特定问题。 谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Peter:

    我将在下周早些时候回复您、对于延迟、我深表歉意。

    此致、

    Delaney

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Peter:

    您能否分享如何在主文件中包括库头文件? 您是否包含与示例中相同的路径/文件(如下所示)?

    此致、

    Delaney

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、您的提示将引导我找到解决方案。

    我不能重现错误、但我想我知道原因。 我没有 注意到 lwip/utils/lwipplib 文件中包含许多.c 文件。 项目文件夹 包含相同的.c 文件、因此它们包含两次。