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.

[参考译文] TM4C129XNCZAD:can't figure out "unresolved symbols reme"(错误#10234-D)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1273887/tm4c129xnczad-can-t-figure-out-unresolved-symbols-remain-error-10234-d

器件型号:TM4C129XNCZAD

在编译包含 emWin 图形库的项目时、出现以下错误:

          第一个引用的未定义          
                文件中的符号               
 ----------------          ----------------          
 Write_Data_ 16     ./emWin/Config/LCDConf.obj
 Write_Index_Reg_ 16./emWin/Config/LCDConf.obj

这是唯一的错误、即使在"清理项目"之后仍然存在。  LCDConf.c 中的一行是"include "LCD_driver.h"。  在 lcd_driver.h 中,行是"extern void Write_Data_ 16( U16 Data );"。 在 LCD_driver.cc 中是函数:

空 Write_Data_ 16(U16数据){

   LCD_Data ();                        //写入 Data_Sel 寄存器。
   LcdWrite16(数据);                    //数据输出。
   LCD_WR_True ();                         //将其选通。
   for (int i=0;i<10;i++){}
   LCD_WR_False ();

提供帮助。  谢谢

道格

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

    它真的是一个 LCD_driver.cc 或 LCD_driver.c 文件吗? CCS 无法识别.cc。 假设它是 LCD_driver.c 文件、此文件在哪里? CCS 可以找到该文件吗?

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

    尊敬的 Charles:

    是的、它是 LCD_DRIVER.cc、而 CCS 确实识别了它(对我来说、识别它已接近15年了。  是的、CCS 可以发现此文件、因为所有内容都已编译且运行正常、直到我将 Write_Data_ 16 ()调用添加到 LCDConf.c 文件中。

    谢谢、Doug

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

    尊敬的 Doug:

     我会将您的问题转发给我们的编译器专家、以征求您的意见。  

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

    我已将该问题转给了主题专家。

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

    请重新编译整个项目。  一种方法是右键单击项目名称、然后选择 重建项目 。  然后将"Console"(不是"Problems")视图的内容保存到文本文件。  使用名为的图标 复制构建日志 。  当您为日志文件命名时、请确保使用文件扩展名 .txt 。  请 在下一篇文章中附加该文本文件。

    谢谢。此致、

    -乔治

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

    执行重建项目解决了问题。  谢谢你。

    执行清理之后执行编译工程和执行重建工程之间的区别是什么?

    道格

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

    Doug、我们也认为先清理后再构建与全部重建是相同的。  我将保持打开该文件、直到该组件区域的所有者回来、以便我可以向他们提出相关问题。

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

    我取回它、误差仍然存在。  我已经注释掉了图形库中的调用。  请重新打开问题。

    我无法插入日志文件、它一直说无法插入。  我将文件放在根目录中、即使我输入文件:\\C:\BuildLog.txt、它也不会保存它。  为什么 INSERT 函数没有 Browse 按钮 I can't fathom。

    谢谢、Doug

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

    我不知道这是否有区别、但未解析的链接位于项目根目录下的文件中、图形库位于子目录中。

    谢谢。

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

    尝试了许多不同的配置后,我最终发现输入(正斜线)/ BuildLog.txt 被接受;你能添加一些帮助信息,使这更容易为他人?

    文件现已插入。

    谢谢、Doug

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

    很遗憾、无法访问附加的 BuildLog.txt。  在我上一篇文章中、单词"attached"是指向 有关如何将文件附加到论坛帖子的常见问题解答条目的可点击链接。  请遵循该常见问题解答中的说明。

    谢谢。此致、

    -乔治

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

    e2e.ti.com/.../3288.BuildLog.txt

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

    好的、拖放。

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

    不幸的是、我无法看到我要找的内容。  链接器调用是...

    Fullscreen
    1
    "C:/TI/ccs1011/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl" -@"ccsLinker.opt" -o "emWinLibTest.out"
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    这意味着链接器调用会从文本文件中读取所有内容 ccsLinker.opt 。  这包括目标文件、库、选项等。  我想知道 LCD_driver.obj 链接器的输入之一。  如果不是、那么我们需要弄清楚这是怎么发生的。  请检查该文件、并告诉我。

    谢谢。此致、

    -乔治

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

    是的、lcd_driver.obj 是链接器的输入、它包含第4个输入。  我将拖放 lcd_driver.obj.txt 供您查看。

    感谢您的帮助!e2e.ti.com/.../ccsLinker.opt.txt

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

    接下来、查看中定义了哪些全局符号 LCD_driver.obj 。  在命令行中,请运行...

    Fullscreen
    1
    armnm -g lcd_driver.obj
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    阿尔姆纳姆 是名称实用程序。  它位于同一个 二进制 Directory 作为编译器 机箱 。 将该命令的输出复制到下一篇文章中。

    谢谢。此致、

    -乔治

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

    它是:


    PS C:\ti\ccs1011\ccs\tools\compiler\ti-cgt-arm_20.2.7.sts\bin>armnm -g LCD_driver.obj
    00000000 w Lib$$request$armlib
    00000000 w Lib$$Request$$cpplib
    00000000 U _Z10LcdWrite16t
    00000001 T _Z11LCD_CS_Truev
    00000001 T _Z11LCD_WR_Truev
    00000001 T Data_Selv
    00000001 T Reset_Hiv
    00000001 T Reset_Lov
    00000001 T _Z12LCD_WR_Falsev
    00000071 T _Z12 Write_Data_ 8h
    000001cd T _Z13 Cold_Init_ L.CDv
    00000001 T Index_Selv
    00000001 T Sel_Hiv
    00000001 T Sel_Lov
    000000a3 T Write_Data_ 16t
    000000d5 T _Z1616 Write_Reg_Data_ 8hh
    00000001 T _Z17 Write_Index_Reg_ 8h
    0000014b T _Z17 Write_Reg_Data_ 16tt
    00000033 T _Z18 Write_Index_Reg_ 16t
    00000000 U _Z7DelayMsi
    00000001 T _Z9LCD_CS_Lov
    00000001 T _Z9LCD_WR_HIV
    00000001 T _Z9LCD_WR_Lov
    00000000 U _Z9LcdWrite8h
    00000000 D __TI_DW.debug_info.$base_types.c8c38483d660372cd06395436475430b
    00000000 D __TI_DW.debug_info.GUI.h.3faca3c13440f4dc6c841893f54d893a
    00000000 D __TI_DW.debug_info.GUI_Type.h.d8f96134368f765c80378b006e3d6695
    00000000 D __TI_DW.debug_info.LCD.h.1f2eb5162e863cc275977590d3f425c6
    00000000 D __TI_DW.debug_info._stdint.h.dae46d2680a0ef0318854371040bc9c6
    00000000 D __TI_DW.debug_info._types.h.5571128f76cd416c2dd2fe1f700de5bf
    00000000 D __TI_DW.debug_info._types.h.92b3a46de8d5a94b82a34dc94f40ee32
    00000000 D __TI_DW.debug_info.common.h.362b3e5dee9c213bb9a8dbe7ee8e91b2
    00000000 D __TI_DW.debug_info.lcd_driver.cc.40376d3757c7edfa307a589b7323741b
    00000000 D __TI_DW.debug_info.stdint.h.9d38a5ba65e636e71337cc2a2817e095
    00000000 U memcpy
    PS C:\ccs1011\ccs\tools\compiler\ti-CGT-ARM_20.2.7.LTS\bin>

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

    是否 LCD_驱动器.cc 包含 C 代码、还是 C++代码?

    谢谢。此致、

    -乔治

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

    C++

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

    该文件 LCD_驱动器.cc 编译为 C++代码、而不是 C 代码。  这意味着函数的名称已改编。  例如函数...

    _Z13 Write_Data_ 16t

    这就是名称在汇编代码、映射文件等中的显示方式。  但您从 C 代码中调用它、 Write_Data_ 16 。  该名称下不存在函数。   

    解决方案是应用 外部"C" 函数名的名称。  不仅仅是在 LCD_驱动器.cc ,但也在头文件中。  文件中的头文件中、  #ifdef _cplusplus 因此在编译为 C 时不会看到该信息。 有关所有详细信息、请参阅 此常见问题解答 (并非来自 TI)。

    我很抱歉没有尽快考虑这一点。  现在回顾线程、这个问题的证据非常明显。  「我知道了,妈妈。」

    谢谢。此致、

    -乔治

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

    我很抱歉,我浪费了你的时间在我应该弄清楚自己的东西上。  这是我第一次遇到这个问题、不会再发生。

    道格