错误:无法打开源文件“...”

3

我正在使用通过Dreamspark下载的VS2010,虽然我可以通过右键单击并按“打开文档”来打开#include文件,但它会出现“错误,无法打开源文件"..."”的提示,这似乎非常荒谬。这次我正在使用Qt与Qwt,并且我特别遇到了以下问题:

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

(我正在使用“<>”)不确定如何在上面的代码中正确显示它们。
谢谢您提前的帮助。

2
尝试将<filename>替换为"filename"。这与链接无关。 - anon
之前尝试过,但是没成功 =/ 我不确定这是什么问题,抱歉。 - Cenoc
3个回答

10
如Neil所指出的,尝试使用引号而不是<>字符来围绕文件名。 当使用引号时,MSVC会在包含#include的文件所在目录中查找指定的文件,然后如果在该目录中找不到,则会在包含路径指定的目录中查找。 当文件名被<>字符包围时,当前文件所在目录不会被查找 - 编译器直接转到包含路径。
有关详细信息,请参见http://msdn.microsoft.com/en-us/library/36k2cdd4.aspx
请注意,这是一种依赖于实现的行为 - 它可能不适用于其他编译器。
如果这并没有帮助,确保你的包含路径包含了文件所在的目录,设置"Include Directories"属性即可: 最后,你可能正在使用一个makefile项目(我不确定从VS构建Qt项目时继续使用qmake有多常见),在这种情况下,你将需要在make文件或传递给调用makefile的命令行的参数中执行必要的配置。

我正在使用cmake; 这在过去一直非常可靠? - Cenoc
1
@Cenoc:这不是可靠性的问题,而是配置的问题。如果VS使用makefile项目,则它所做的只是运行启动构建的命令行 - 在此之后,编译器由makefile调用,并使用makefile给出的任何参数。此时,VS项目的配置已经不再起作用了。您应该确保正确地指定了cmake需要指定包含目录路径的方式。 - Michael Burr
啊,原来是出现了循环链接问题,而且我把所有代码都放在了.h文件中。将其拆分并添加了.cpp文件后,一切正常运作。 - Cenoc

3

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

项目 -> 属性 -> c/c++ 部分 -> 其他包含目录。

如果它们位于您正在编辑的源文件或其中一个附加包含目录(我认为)的子目录中,您也可以使用以下方式将它们包含进来:

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

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


1
我尝试过这两种方法,但都不起作用,很遗憾...奇怪的是,Visual Studio似乎能够找到它们,或者至少打开它们,当我要求打开文档时不会出现错误;因此它知道它在哪里...看起来... - Cenoc
我也尝试过移动 #include 语句相对于彼此的位置。 - Cenoc

0
原来是出现了循环链接问题,而且我把所有的代码都放在了一个.h文件中。我将其拆分并添加了相应的.cpp文件,现在一切正常运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接