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.

[参考译文] MSPM0G3107:在 CCS v20.3.1.5__1.9.1 中向工程添加新源文件时出现问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1596907/mspm0g3107-issue-adding-new-source-files-to-project-in-ccs-v20-3-1-5__1-9-1

器件型号: MSPM0G3107

向我的工程添加新的源文件会导致未解析的符号错误。

我试图将函数组(如我的 UART 例程)分解成模块化源文件、以避免拥有一个海量文件

我在“Explorer"窗口“窗口中右键点击我的工程并选择“New File... “然后我将所有函数(在 main.c 中没有问题地编译)移动 到我的新 UART.C 文件中。 它按预期显示在我的工程文件窗口中(下图是第一个图像)我创建了一个 UART.H 头文件来声明它们并将其包含在 main.c 中 当我将鼠标悬停在 main.c 中的 include 语句上时、会显示我位于 UART.C 中的函数(下图第 2 个)。

但在编译时、我会得到“error 10234-D unresolved symbols remain“、表明 UART.C 中的所有函数在 main.o 中均未解析(第 3 幅图像)。  我知道它编译 UART.C、因为我可能会引入错误并标记“得到“。 我还在 main.o 旁边的调试文件夹中看到了 uart.o

我曾尝试定义链接顺序、以便首先使用 UART.C 链接(第 4 幅图像)、甚至这对我没有帮助、我希望这也没有关系、因为我希望可以添加更多模块、而且过去使用旧版本的 CCS、我从未想过要控制它们的链接顺序。

我想在某个地方我缺少一些设置、但我无法确定它是什么。

此外、我已经尝试从工程中删除 UART.C 并将其移至其他位置、然后尝试使用相同的结果“Add Files/Folders“选项。  

请提供帮助

TI CCS issue4.png

TI CCS issue.png

 

TI CCS issue3.png

TI CCS issue1.png

 

TI CCS issue5.png

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

    尊敬的 Dan:
    我建议将您的 CCS 升级到版本 20.4。 此版本的 CCS 往往会解决这些类型的问题。

    此致、

    Diego Abad

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

    尊敬的 Dan:

    我还建议检查您的工程属性、看看 Include Options 是否能够找到您的文件:

    此致、

    Owen

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

    由于编译器确实找到了这些文件并在调试文件夹中生成了一个.o 文件、这是否表明它确实可以找到所述的文件?  此外、该文件位于代码编写器明确找到的与 main.c 相同的(根目录)目录中。  是的、我已验证${PROJECT_ROOT}是否在 include 列表中。

    这才是真正的解脱。  编译器会编译该文件、但链接器似乎不了解该文件。  请注意、我不会收到“file not found(文件未找到)“错误、如果链接器查找到文件但找不到该错误、我希望链接器会收到该错误。  相反、链接器似乎对文件的存在或任何查找需求一无所知。

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

    尊敬的 Dan:

    这可能是链接器问题。

    我注意到您的文件是 uart.c、大写为 c。您可以尝试将其修复为 uart.c 吗?

    如果可能、您能否使用 readelf 工具查看公开了哪些符号?

    此致、

    Owen

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

    这解决了问题。

    哇哦。 因此、虽然 Windows 文件系统和编译器不区分大小写、但链接器在某种程度上是?  没有看到那将要到来。

    感谢您的帮助。 那是她第一次见到你。