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:来自相邻示例项目的头文件#include错误#1965

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/564941/ccs-error-1965-on-include-of-header-file-from-neighboring-example-project

工具/软件:Code Composer Studio

我正在我的工作区中的一个POWER_measurement示例项目的副本上进行黑客攻击,该项目位于CCS 6.2 v.0.005万下。

我已将bma222drv.h "链接"到我的项目中。 检查文件的“属性”将显示正确的链接。

我得到一个红色的"X"(滚动显示"#1965 Cannot open source file "bma222drv.h" from CCS (#1965无法从CCS打开源文件"bma222drv.h")。

我看过其他帖子,似乎说我需要指定包含文件的OOB项目位置。 我不想这样做,因为我不想编译器在那里四处寻找我可能忘记的东西。

由于CCS和编译器已在OOB项目中明确正确地解决了我到bma222drv.h的链接(请参阅屏幕截图),并且存在文件(我可以单击链接并打开),这是什么问题?

e2e.ti.com/.../5.3768万

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

    您仍需要通过项目属性将文件的路径提供给编译器。 编辑器/IDE的使用方式可以查找文件,但编译器也需要该信息。 编译器只能根据指定的include路径和 #include 语句查找文件,但是我可以理解您要避免的情况。 一个选项是将 引用文件的#include更改为具有一些相对路径信息。

    #include <oldproject/inc/john.h>

    然后在我指定的搜索路径中
    "${workspace_LOC}"

    这样,在查找john.h时,编译器将追加oldproject/inc,从而在我的工作空间的另一个项目中找到它,但在其中找不到其他头文件。


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

    那么,编译器在需要时,什么会阻止它看到$(workspace_LOC}并在*all*项目中查找? 它是否只在指定的树"节点"中查找,而不在这些点的下面?

    假设上述情况,您基本上是在说编译器不能跟踪文件链接吗? 为什么不呢?

    作为该职位的作者:
    e2e.ti.com/.../5.3768万

    6-1/2年前评论了似乎是同一个问题:

    "在项目根目录中添加.h文件的链接似乎是合乎逻辑的。 CCS4似乎充满了这些“不合逻辑的行为”。

    文件资源管理器在项目目录中不显示任何名为"bma222drv.h"的内容,因此我认为链接不会表示为任何类型的不同文件系统构造。 这可能解释了为什么编译器不能跟踪链接,除非编译器经过增强以查找存储链接的位置/位置。 出于好奇,链接存储在哪里?

    我认为,将这样的文件复制到我真的只想链接的位置可能会更安全,但通过在文件名中附加"_PseudoLink_to_Example_Project_OOB--DoNotEdit",提醒自己不要编辑这些文件。

    所有这些似乎都是不合逻辑的。 我错过了什么吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    拉尔夫

    编译器不在指定的包含路径下搜索。  这是编译器的标准行为。  我想有人可以实施 一个搜索子目录的目录,但这会导致许多结果不一致的情况,并产生重大的性能问题。

    当您添加"链接"文件时,它只会在其中一个项目文件中添加一个条目,指定该文件已链接,项目目录中不会有任何文件。  令人困惑的部分原因是,C文件和.H文件似乎有所不同。  这是因为. C文件是输入文件。  IDE将收集输入文件并将其传递给编译器。  头文件不会传递给编译器,编译器在编译期间在输入文件中遇到#include语句时会查找这些文件。  当查找它们时,它使用#include语句(""或<>和任何路径信息)中的信息和include搜索路径。

    如果您有一组在项目之间共享的输入文件,您可以将它们放在一个公用文件夹中,然后搜索每个项目的搜索路径以指向该文件夹。  

    另一件事是管理搜索路径顺序。  编译器将使用在搜索路径中找到的第一个文件。  例如,如果项目的/inc文件夹中有一个file.h,而公共头文件文件夹中有另一个file.h,则只需确保项目/inc文件夹的路径列在公共文件夹的上方,然后编译器将使用项目中的路径 只有在找不到公用文件夹时,它才会使用公用文件夹中的公用文件夹。  

    一个更容易做的事情是,当链接.h文件时,该文件的路径会自动添加到搜索路径中。  我可以提出请求。  我不确定我们是否有能力改变它,但它值得检查。

    此致,

    John