在一个名字为VideoCapMFC工程中,使用directshow程序文件时,我们将directshow文件夹放在了E:\OpenCV_study\MyProjects\VideoCapMFC文件夹下,编译提示错误:
e:\opencv_study\myprojects\videocapmfc\camerads.h(26) : fatal error C1083: Cannot open include file: '\DirectShow\Include\qedit.h': No such file or directory
查看E:\OpenCV_study\MyProjects\VideoCapMFC\CameraDS.h文件头部,发现以下文件包含语句:
#include "\DirectShow\Include\qedit.h"
修改代码为:
#include "DirectShow\Include\qedit.h"
也就是去掉前导的\号后,重新编译,正常。
但是,如果我们将directshow文件夹从VideoCapMFC文件夹里面挪出来,放在和VideoCapMFC文件夹并列的位置,就是说二者同在一个父文件夹下面,这时怎么办呢?
可以使用以下代码:
#include "..\DirectShow\Include\qedit.h"
编译后,也正常。
上述代码的意思就是,..\使编译器定位到当前工程文件所在的父文件夹,在父文件夹下面寻找一个名字为DirectShow\Include\的文件夹,这个文件夹里有一个名字为qedit.h的头文件。
我们结合DOS下的cd命令继续探究
点击开始菜单的运行,输入cmd,弹出命令行界面,先输入
E:
结果界面如下:
再输入
cd E:\OpenCV_study\MyProjects\VideoCapMFC
结果界面如下:
这时,我们有四种操作,分别是进入当前文件夹的父文件夹、兄弟文件夹、子文件夹、驱动器分盘根文件夹。
(a)进入当前文件夹的父文件夹
使用以下命令:
cd ..\
结果如下:
(b)进入当前文件夹的兄弟文件夹
所谓兄弟文件夹,就是和当前文件夹共同一个父文件夹,但是两者之间互不包含的文件夹,两者间是并列的关系。我们先使用以下命令:cd E:\OpenCV_study\MyProjects\VideoCapMFC ,回到VideoCapMFC文件夹,然后使用以下命令:
cd ..\Test_CV
(注,Test_CV是VideoCapMFC文件夹的兄弟文件夹)
结果如下:
(c)进入当前文件夹的子文件夹
依然假设当前文件夹是VideoCapMFC文件夹,使用以下命令
cd Debug
(注,Debug是VideoCapMFC文件夹的子文件夹)
结果如下:
(d)进入当前文件夹的驱动器根文件夹
显然,当前文件夹VideoCapMFC的根文件夹是E盘,可以使用以下命令:
cd \..
或者
cd e:
结果如下: