【问题标题】:Error can not open source file "..."错误无法打开源文件“...”
【发布时间】:2010-06-04 14:13:51
【问题描述】:

我正在使用 VS2010(通过 Dreamspark 下载),虽然我可以通过右键单击 #include 文件并按下打开文档来打开它,但它抱怨“错误无法打开源文件“...””,这似乎相当荒谬。这次我将 Qwt 与 Qt 一起使用,我特别遇到了以下问题:

#include <qwt_counter.h> 
#include <qwt_plot.h>

(我使用的是“”);不知道如何使它们在上面的代码中正确显示。

提前致谢。

【问题讨论】:

  • 尝试将&lt;filename&gt; 替换为"filename"。这与链接无关。
  • 之前试过,但没用 =/ 我不确定 hurrr 有什么问题,对此感到抱歉。

标签: c++ visual-studio


【解决方案1】:

正如尼尔所说,尝试在文件名周围使用引号而不是 &lt;&gt; 字符。使用引号时,MSVC 将在与#include 所在文件相同的目录中查找指定文件,然后如果未找到,则会在包含路径指定的目录中查找。当文件名被&lt;&gt; 字符包围时,不会查看当前文件的目录 - 编译器会直接进入包含路径。

详情请见http://msdn.microsoft.com/en-us/library/36k2cdd4.aspx

请注意,这是一个依赖于实现的行为 - 它可能不适用于其他编译器。

如果这没有帮助,请确保您的包含路径包含文件所在的目录,方法是适当地设置“包含目录”属性:

最后,您可能正在使用 makefile 项目(我不确定 Qt 项目在从 VS 构建时继续使用 qmake 的常见程度),在这种情况下,您需要执行任何配置在调用 makefile 的命令行上传递的 make 文件或参数中是必需的。

【讨论】:

  • 我正在使用 cmake;这在过去相当可靠?
  • @Cenoc:这并不是真正的可靠性问题——而是配置问题。如果 VS 使用的是 makefile 项目,它所做的只是运行启动构建的命令行 - 之后 makefile 使用 makefile 提供的任何参数调用编译器。到那时,VS项目的配置就出局了。您应该确保 cmake 需要指定的包含目录路径正确完成。
  • 啊,原来发生了循环链接,我的所有代码都在一个 .h 文件中。将其拆分并添加 .cpp 文件,一切正常。
【解决方案2】:

这些文件所在的路径是与此源文件的路径相同,还是包含在项目设置中的“其他包含目录”中?

项目 -> 属性 -> c/c++ 部分 -> 附加包含目录。

如果它们位于您正在编辑的源文件或其他包含目录之一的子目录中(我认为),您也可以将它们包含在:

#include <path_to_file_1/qwt_counter.h>
#include <path_to_file_2/qwt_plot.h>

[编辑] 或者当然是尼尔说的 [/编辑]

【讨论】:

  • 我尝试了这两种方法,但它们都没有工作,可悲的是......奇怪的是,Visual Studio 似乎能够找到它们,或者至少打开它们,当它没有给出错误时我要求打开文件;所以它知道它在哪里......似乎......
  • 我也尝试过将#include 语句相对于彼此移动。
【解决方案3】:

原来发生了循环链接,我将所有代码都放在了一个 .h 文件中。我将其拆分并添加了相应的 .cpp 文件,现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多