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.
工具/软件:Code Composer Studio
您好!
我一直遇到这些错误、无法确定。 它说这是一个 C/C++编程问题、从我从其他论坛中学到的内容来看、文件之间的链接似乎存在问题、但我不知道如何删除它。
未定义的首次引用
符号
------ --------
fpadd1271 /microFourQ-MSP-master/src/crypto_util.obj
fpcopy1271 ./microFourQ-MSP-master/src/crypto_util.obj
fpdiv1271 /microFourQ-MSP-master/src/crypto_util.obj
fpexp1251 /microFourQ-MSP-master/src/crypto_util.obj
fpneg1271 ./microFourQ-MSP-master/src/crypto_util.obj
fpsub1271 /microFourQ-MSP-master/src/crypto_util.obj
mod1271 ./microFourQ-MSP-master/src/crypto_util.obj
备注#10371-D:(ULP 1.1)未检测到使用低功耗模式状态更改指令
MP_add128 ./microFourQ-MSP-master/src/eccp2.obj
>>编译失败
Makefile:177:目标'FourQ on MSP430 Test.out'的配方失败
错误#10234-D:未解析的符号仍然存在
错误#10010:链接期间遇到错误;未构建"FourQ on MSP430 Test.out"
gmake.1]:***[FourQ on MSP430 Test.out]错误1.
gmake:***[全部]错误2.
Makefile:173:目标“全部”的配方失败
****构建完成****
谢谢、
-肖恩
错误基本上是指源文件(在本例中为 crypto_util.c)引用符号 fpadd1271、fpcopy1271等、但链接器无法找到这些符号的定义。 定义可以来自定义这些函数的源文件、也可以来自库文件。 第一步是确定哪个文件/库包含这些符号的定义。 然后、如果它位于源文件中、请确保它已添加到工程中、或者如果它位于库文件中、请确保它已链接到工程中。
*帮助! 另一个问题!*
感谢您的快速回复! 您的指令非常清晰、我在 crypto_util.c 文件中包含了 include 防护(#include "fp.h")、似乎已经消除了这些问题。 下面是我的工作方式:
但是、我现在遇到了一个新问题、它告诉我文件中有重新定义的符号。
下面是有关上下文的一些其他屏幕截图:
fp.h 中的 fpmul1271:
eCP.c 中的 fpmul1271:
crypto_util.c 中的 fpmul1271:
fpmull1271参考:
我已经在互联网上读到这个问题与声明和定义有关、但从我所看到的内容来看、我不确定是否是这样。 我也没有在 crypto_util.c 或 eccpd2.c 文件中包含任何.c 防护。
这就是我对定义和声明的理解:
-肖恩
查看此 常见问题 解答、了解如何/在何处声明和定义变量和函数。
如常见问题解答中所述、您可能需要考虑将 fpmul1271的定义移动到 C 源文件、并在 fp.h 头文件中放置外部声明。 然后、在所有需要 fp.h 文件的 C 文件中包含该文件。 请注意、编译器工具只能看到函数的一个定义。
肖恩、
这实际上归结为 C 编程概念、而不是工具。 该工具(在本例中为链接器)只是通知您同一符号/例程的多个定义。 如果不查看所有代码、我无法肯定地告诉您有关此特定错误的信息、但您是否确认(根据我上一篇文章中链接的常见问题解答) fpinv1271未在上述两个 C 文件中都包含的.h 文件中定义? 如果是这种情况、请对其进行更改、以便您使用"extern "在头文件中声明函数、然后在恰好一个 C 源文件中定义函数。