今天在编译一个mfc的directshow程序发现报了一个c1083错误:fatal error C1083: Cannot open include file: 'streams.h': No such file or directory
CFilterGraph.cpp,自以为是没有在头部#program comment(lib,"")造成的,后来导入lib仍报错,后查找tools->options->directories 的lib设置,没有发现问题,因为刚装的系统忘记了directshow的base类编译过没有,所以去检查,发现已经编译了。后来去网上查找了才发现原来导致C1083的原因还很多。。。
1 头部#include文件错误,#include 后面的包含的文件时,如果使用的是 "<>" 尖括号的话, 表示让编译器在系统头文件夹中查找对应名字的头文件, 当使用""引号时,就是让编译器在当前程序目录下查找对应名字的头文件,如果没有找到,则编译器会再在系统头文件夹中查找该头文件. 注意#include文件到位置。
2 感觉是编译器兼容问题,比如:include “streams.h”有的情况下在vs2003编译通过的情况下,在vs。net编译无法通过,改成,include "streams"去掉.h就可以了。
3 有可能是文件整理后移动位置,将与编译头文件和cpp文件目录修改导致错误,用记事本打开.dsp文件,找到与编译cpp文件,少了个与编译开关所以不能生成与编译头文件:.pch
加入开关:# ADD CPP /Yc"。h文件"。例如:
SOURCE=./StdAfx.cpp
# End Source File
# Begin Source File
# Begin Source File
发现少了个与编译开关所以不能生成与编译头文件:。pch
加入开关:# ADD CPP /Yc"stdafx.h"
SOURCE=./StdAfx.cpp
# ADD CPP /Yc"stdafx.h"
# End Source File
# Begin Source File
# ADD CPP /Yc"stdafx.h"
# End Source File
# Begin Source File
4 在编译directshow源码的时候注意将C:/DXSDK/Samples/C++/DirectShow/BaseClasses下的文件先进性一次编译。
5 tools->options->directories 里的lib设置问题
6 有的时候需要使用#program comment(lib,"")命令导入一个lib库文件。让编译器在该库文件中搜索,引入的头文件。