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.

[参考译文] CCS/MSP430F6659:链接器或编译器中的 CCS 未解析符号会导致错误

Guru**** 2618835 points

Other Parts Discussed in Thread: MSP430F6659

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/673946/ccs-msp430f6659-ccs-unresolved-symbols-in-linker-or-compiler-causing-errors

器件型号:MSP430F6659
主题中讨论的其他器件: CODECOMPOSER

工具/软件:Code Composer Studio

我是 newbee c 程序员、所以要耐心一点。 我在 Code Composer Studio 7.3中有一个使用 Windows 7的 MSP430 C 项目。 我的项目(USB)运行正常、然后我尝试添加更多代码来整合 SPI 接口、一切都进展不顺利。 我恢复了原始代码、但现在出现了以前没有的问题。 似乎在编译、但在链接器中存在几个未解析的符号错误(我认为)。 我在论坛上搜索/研究了许多关于这些类型问题的答案、并尝试了很多事情(过去两天!) 无法解决我的问题。 可能我通过将库/函数直接复制到项目目录而使事情变得更糟、但看起来仍然没有任何变化。 这些错误与标准 MSP430函数有关、而不是与我的代码有关。 我的项目树如下所示:

来自控制台的错误包括:

从我读取的所有内容中、它表示我遇到了编译器库路径问题或链接器文件路径问题。 尝试了很多组合都没有效果。 以下是编译器和链接器路径信息:

在我从 TI 下载的库资源库中、您可以看到、引用文件中错误消息行的 dma.h 和 dma.c 文件都在那里、我不明白为什么链接器不能执行它。

在库文件下的链接器中、我注意到原始 libmath.a 文件没有指向任何内容、因此我找到了一个并添加了它(不是帮助)。 libc.a 还指向包含3个目录的段(工具的不同版本)、每个目录都具有不同版本的 libc.a、我想我尝试了所有这些目录。 请参阅下面的目录

我已经尝试了所有链接器/编译器路径/文件组合的每个组合、但没有任何改进。  我出了什么问题?

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

    您能否描述一下您为恢复原始 USB 代码所做的工作? 在该过程中、似乎是什么导致了问题。

    此致、
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经尝试了许多难以记住的事情。 工作正常、 我想所发生的是、我已经将 SPI 代码示例导入到了一个新项目中、并正在进行实验、发现 CSS 库有一个更高版本、因此我将它们与我一直在播放的 SPI 代码一起添加到了我的 USB 项目中 单独的 c 文件。 后来删除了 SPI 代码文件并恢复到我的工作 USB 代码版本 Something 下载新库可能与此相关,但我再次感到困惑,因为链接器文件路径中的链接似乎指向它在错误方面的外观。 除了看门狗计时器参考之外、我的代码中没有任何错误涉及任何内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    想知道文件路径链接是否可能是问题。 我的项目位于 c 驱动器上、我的存储库位于 d 驱动器上?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    线索? 为了解决我的问题、我创建了一个新的 CCS 工程并将 main.c 文件粘贴到中、然后按照所示完成一系列编译、以解决错误。 我遇到一个错误:无法打开源文件 hal.h 我认为这是一个包含在我开始使用的 USB 示例代码中的文件。 将其复制到我的项目后、我将返回到平方、并显示上面列出的所有错误。 为了实现这一点、我只需要将编译器指向 driverlib 来解决以前的错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您能否发布 main.c 文件中包含的内容?

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

    #include
    #include
    #include

    #include "driverlib.h"
    #include "stdint.h"
    #include "usb_inputToBuffer.h" //获取缓冲区数据
    #include "USB_API/USB_Common/usb.h"

    从我的 USB_inputToBuffer.c 文件中删除

    #include
    #include
    #include "driverlib.h"
    #include "usb_config/descriptors.h"
    #include "USB_API/USB_Common/device.h"
    #include "USB_API/USB_Common/usb.h" //特定于 USB 的函数
    #include "USB_API/USB_CDC_API/UsbCdc.h"
    #include "usb_app/usbConstructs.h"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    控制台日志:

    ****为项目测试构建配置调试****

    "D:\\TI\\ccsv7\\utils\\bin\\gmake"-k -j 8 all -O
    '生成文件:./usb_inputToBuffer.c'
    '调用:MSP430编译器'
    "d:/Ti/ccsv7/tools/compiler/ti-cgt-msp430_16.9.7.LTS/bin/cl430 -vmspx --data_model=restricted --near_data=none --use_hw_mpy=F5 --include_path="D:/Ti/ccsv7/ccs_base/msp430/include --include_path="D:/Ti/ccsv7/tools/compiler/ti-cgt-msp430_16.9.7.LTS/include /Users/rogers/0_TekServices/0-Tek_SVN/Nanometrics/OBE --include_path="D:/Ti/MSP430USBDevelopersPackage_5_20_06_02/MSP430USBDevelopersPackage_5_20_06_02/MSP430_USB_Software/MSP430_USB_API/USB_API /Users/rogers/0_TekServices/0-Tek_SVN/Nanometrics/OBE --include_path="D:/Ti/MSP430USBDevelopersPackage_5_20_06_02/MSP430USBDevelopersPackage_5_20_06_02/MSP430_USB_Software/MSP430_USB_API/driverlib/MSP430F5xx_6xx --include_support=usbot_expositure=us_codestion_us_codestion_us_codestion=us_codestion_us_codestion_trature=us_codestion_us-us_codestion_codestion_us_codestion_us-us_codestion_codestion_us-us_codestion_trature=us_codest-us_codest-us_codest-us_codestion_codestion_us_codestion=us_codestion_trature=us_us_codest-us_codestion_us_codestion_trature=us_codestion_us_codestion_us.cp_codest-us_codestion_us.cp_
    "./usb_inputToBuffer.c"、第121行:警告#515-D:无法将类型为"char *"的值分配给类型为"int *"的实体
    "./USB_inputToBuffer.c"、第117行:警告#179-D:变量"retPos"已声明但从未引用
    "./USB_inputToBuffer.c"、第127行:备注#1544-D:(ULP 13.1)检测到循环递增计数。 建议对循环进行倒计数、因为检测零更容易
    "./USB_inputToBuffer.c"、第117行:备注#1535-D:(ULP 8.1)变量"retPos"用作常数。 建议将变量声明为"静态常量"或"常量"
    '已完成构建:./usb_inputToBuffer.c'
    '
    '构建目标:testing.out'
    '调用:MSP430链接器'
    "d:/Ti/ccsv7/tools/compiler/ti-cgt-msp430_16.9.7.LTS/bin/cl430 /Ti/MSP430USBDevelopersPackage_5_20_06_02/MSP430USBDevelopersPackage_5_20_06_02/MSP430_USB_Software/MSP430_USB_API/driverlib/MSP430F5xx_6xx /Ti/MSP430USBDevelopersPackage_5_20_06_02/MSP430USBDevelopersPackage_5_20_06_02/MSP430_USB_Software/MSP430_USB_API/USB_API /Users/rogers/0_TekServices/0-Tek_SVN/Nanometrics/OBE /Ti/ccsv7/ccs_base/msp430/lib/5xx_6xx_FRxx -vmspx --data_model=restricted --near_data=none --use_hw_mpy=F5 --advice:power-define=__MSP430F6659__-g --printf_support=minimal --diag_warning=225 --display_error_error_number="-dit_ex-it_itudit_/Ti/MSP430USBDevelopersPackage_5_20_06_02/MSP430USBDevelopersPackage_5_20_06_02/MSP430_USB_Software/MSP430_USB_API/USB_API/USB_Common -it_itudit_a-cinese-dit_pruature=de-d_itudit_inese-dit_it_it_it_itudpage-/Ti/ccsv7/ccs_base/msp430/include /Ti/ccsv7/tools/compiler/ti-cgt-msp430_16.9.7.LTS/lib -/Ti/ccsv7/tools/compiler/ti-cgt-msp430_16.9.7.LTS/include -dit_itch -dit_it_it_ditch -dit_m.iptinese-d_ateginese-d_ina-d_prinese-tina-d_it_it_it_it_it_d_ateginese-d_ateginese-d_ina-d_aturese-d_inese-tinese-tore.tinese-d_ina-d_inese-d_ategot iag_wrap=off --display_error_number --warn_sections --xml_link_info="Testing_linkInfo.xml"--use_hw_mpy=F5 --rom_model -o "Testing.out""./main.obj "./proc_buffer./usb/usbapi"/usbapi"/content/usbapi_infot./us/us/usbapi"/content/us/usbapi_infot./us/us/us/us/usbapi_obj "/us/us/us/usbapi_obtobtobtobtobtobj "/us./us/us/us/us/us/us/us/us/us/us/us/us.obtablec./us/us/us/us/us/us/us/us.obtobtobtobtobtobtobtobtobtobtobtobtobtobt./us/us/us/us/us/us/us/us/us/us /Ti/ccsv7/ccs_base/msp430/lib/5xx_6xx_FRxx/libmath.a


    未定义 第一个参考
    符号 文件中
    ------ --------
    dma_disableTransferDuringReadModifyWrite ./USB_API/USB_Common/usbdma.obj
    DMA_disableTransfers /USB_API/USB_Common/usbdma.obj
    DMA_enableTransferDuringReadModifyWrite /USB_API/USB_Common/usbdma.obj
    DMA_enableTransfers /USB_API/USB_Common/usbdma.obj
    DMA_getInterruptStatus /USB_API/USB_Common/usbdma.obj
    DMA_init /USB_API/USB_Common/usbdma.obj
    DMA_setDstAddress /USB_API/USB_Common/usbdma.obj
    DMA_setSrcAddress /USB_API/USB_Common/usbdma.obj
    DMA_setTransferSize /USB_API/USB_Common/usbdma.obj
    DMA_startTransfer /USB_API/USB_Common/usbdma.obj
    GPIO_setAsOutputPin /usb_api/hal.obj
    GPIO_setPeripheralModuleFunctionOutputPin ./USB_API/USB_Common/usb.obj
    GPIO_setOutputLowOnPin /usb_api/hal.obj
    PMM_setVCore /main.obj
    TLV_getinfo /USB_API/USB_Common/usb.obj
    UCS_initClockSignal /USB_API/USB_Common/usb.obj
    UCS_initFLSettle /usb_api/hal.obj
    UCS_TurnOffXT2 /USB_API/USB_Common/usb.obj
    UCS_TurnOnXT2WithTimeout /USB_API/USB_Common/usb.obj
    WDT_A_HOLD /main.obj

    错误#10234-D:未解析的符号仍然存在
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 E。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。

    >>编译失败
    Makefile:179:目标'Testing.out'的配方失败
    Makefile:175:目标'all'的配方失败
    错误#10010:链接期间遇到错误;未构建"Testing.out"
    gmake.1]:***[Testing.out]错误1.
    gmake:***[全部]错误2.

    ****构建完成****
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    修复了,但是为什么!!!
    为了解决这个问题、我将 drivlib 目录从 D 驱动器上的 TI repo 导入到了我的项目中。 现在、所有内容都已编译。 有人能告诉我为什么我必须这样做、因为我有路径指令来查看 D 驱动器? 它是否与搜索路径长度过长相关?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我很高兴您能够修复它。 我认为这不是搜索路径长度的问题。 相反、您的问题是、虽然您具有正确的路径指令、但这仅足以包含.h 文件。 不过、在您的情况下、您尝试使用.c 文件中定义的未包含在项目中的变量和函数、这意味着它们未编译。 这就是您看到未解析符号错误的原因。 这些变量和函数未进行编译、因此编译器在尝试执行源代码时无法找到它们。

    此致、
    Nathan