本文介绍了包含文件存在但再次显示致命错误C1083:无法打开包含文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 这次Iam在C ++中苦苦挣扎,因为我对此非常陌生,我也有一些启动困难。在这个项目中我使用了很多Header文件和库。同时构建应用程序它显示:致命错误C1083:无法打开包含文件,但文件已经包含在内。在使用此错误进行搜索时,我发现如果给出的路径不正确,那么此错误也会出现。所以我也检查过。所有好的但又一次显示致命错误C1083:无法打开包含文件。 请提供一些帮助。 以下是我的代码: #include StdAfx.h #include #include TciCons.h #include tftai.h #define TFTime __time32_t #include tfdescr.h #include exinfo.h #include tai.h #include #include #inclu de #include #include .. \include\drvstandard.h #include .. \include\drvtool.h //原型驱动程序开发 #include .. \include\UniTCPIPImports.h //原型并定义为TCP / IP通信库 #include .. \\\ quot; \ theicicode.h #include TsTCPAlarmItem.h #define DRIVER_NAME _T(TSTCP) static TCHAR szDrvVersion [] = _T( 1.1.01); unsigned long localtime_julian(长蒂姆); int ServiceRequest(COM_RESP_REC& com_resp_rec); #define BUFSIZE1 512 * 1024 CTciCons :: CTciCons( void ) { nProtocol = PROTOCOL_DB2; pArchive = NULL; pSetup = NULL; pSetupExtra = NULL; memset(& CpcRespRec, 0 , sizeof (CpcRespRec)); memset(& Db2Params, 0 , sizeof (Db2Params)); memset(& Db2, 0 , sizeof (Db2)); memset(& Db1, 0 , sizeof (Db1)); dnl_buf = new unsigned char [BUFSIZE1]; strncpy(CpcRespRec.com_req.idnum, EM002, 10 ); memcpy(CpcRespRec.com_req.scode, 0000, 4 ); strncpy(CpcRespRec.com_req.phone_nbr, T166.131.58.7 / 12345, 25 ); CpcRespRec.com_req.comport = 11 ; // CpcRespRec.com_req.baud = 9600; CpcRespRec.com_req.linktime = 0 ; CpcRespRec.com_req.retries = 3 ; strcpy(CpcRespRec.com_req.work_station_id, EM002); CpcRespRec.com_req.rem_dev_type = 0 ; // FCU CpcRespRec.com_req.time_out = 10 ; CpcRespRec.com_req.com_type = 10 ; // tcp / ip Db2.bCompressed = 0 ; Db2.MaxDataBlockSize = 1024 ; Db2.MaxPacketSize = 8 * 1024 ; Db2.RemoteRespTimeoutSecs = 10 ; Db2.retries = 3 ; Db2.RemoteACKTimeoutSecs = 10 ; Db2.CharacterTimeoutSecs = 2 ; / * Db1.retries = 3; Db1Params.nCollectDays = 0; Db1Params.nDataResolution = 0; Db1Params.nReqType = 0; * / memset(& GlobalpbutRespRec, 0 ,的sizeof (GlobalpbutRespRec)); memset(& GlobalkdtRespRec, 0 , sizeof (GlobalkdtRespRec)); memset(& GlobalValve, 0 , sizeof (GlobalValve)); } CTciCons :: ~CTciCons( void ) { delete dnl_buf; if (pArchive) ReleaseArchive(pArchive); if (pSetup) delete pSetup; if (pSetupExtra) delete [] pSetupExtra; } /// ////////// /驱动程序配置标准函数///////////////// // // 未声明的函数被默认函数替换 int CTciCons :: ProcessCommand( int cmd) { char bfr [ 80 ]; ULONG现在; int opt = cmd; if (opt< 0) { if (nProtocol == PROTOCOL_DB1) opt = GetDB1Option(); else opt = GetDB2Option(); } 如果(opt == 0 || opt == 100 ) return 0 ; if (opt == 1 || opt == 101 ) { if (nProtocol == PROTOCOL_DB1) { nProtocol = PROTOCOL_DB2; CpcRespRec.com_req.linktime = 0 ; CpcRespRec.com_req.com_type = 10 ; } else { nProtocol = PROTOCOL_DB1; CpcRespRec.com_req.linktime = 1 ; CpcRespRec.com_req.com_type = 0 ; } 返回 - 1 ; } CpcRespRec.com_req.dnl_buf =( char *)dnl_buf; switch (opt) { case 2 : BuildRegisterRequest(& CpcRespRec.com_req,& Db2, 9 , 0 , 0 , 1 ); ServiceRequest(CpcRespRec); ShowRegisters(); break ; case 3 : float tmp [ 3 ]; tmp [ 0 ] =( float ) 1003 ; tmp [ 1 ] =( float ) 0 。 7 ; tmp [ 2 ] =( float ) 0 ; BuildRegisterDownload(& CpcRespRec.com_req,& Db2, 9 , 0 , 1 , 1 ,( char *)tmp, 4 ); AddRegisterDownload(& CpcRespRec.com_req, 9 , 0 , 4 , 1 ,( char *)(tmp + 1), 4 ); ServiceRequest(CpcRespRec); ShowStatus(); break ; } delete CpcRespRec.rsp_buf; memset(bfr, 0 , sizeof (bfr)); 得到(bfr); if (strlen(bfr)== 0 )返回 - 1 ; return atoi(bfr); } int CTciCons :: GetDB1Option() { } int CTciCons :: GetDB2Option() { int rtn = 0 ; char buffer [ 25 ]; printf( _____________________________ \ n); // printf(DB2协议 - 选择一个选项!\ n); printf( 准备投票!\ n); printf( 0)退出\ n); // printf(1)切换到DB1 \ n); printf( 3)Read Register\\\); printf( 4)Write Register\\\); memset(缓冲区, 0 , sizeof (缓冲区)); 得到(缓冲区); if (strlen(buffer)== 0 )返回 0 ; return atoi(buffer); } 显示丢失的文件是exinfo.h解决方案 你有确保该文件位于编译器搜索路径中。例如,使用 Visual Studio 2005 ,单击工具 - >选项菜单项,然后选择项目和解决方案 - > VC ++目录,在下面的列表中选择包含文件 显示目录: label并最后添加你的包含文件夹。 解决方案1是正确的(首先看一下)。但是,如果这不能解决您的问题,那么您的标题中可能包含无限循环。如果你包括header1.h,其中包括header2.h,它再次包含header1.h,编译器会感到沮丧。您可以通过以下方式获得赔偿: - 确保您没有手动包含循环 - #pragma一次 - 标题后卫块。 Hi, This time Iam Struggling with C++,as Iam very new to this I have some start up difficulties also.In this project Iam using so many Header files and libraries.While building the application it is showing: fatal error C1083: Cannot open include file,but the file is already included.While searching with this error I came to know that if the path given is incorrect then also this error will come.So I checked that also.Everything Ok but again it is showing fatal error C1083: Cannot open include file.Please suggest some help.Below is my code:#include "StdAfx.h"#include#include "TciCons.h"#include "tftai.h"#define TFTime __time32_t#include "tfdescr.h"#include "exinfo.h"#include "tai.h"#include#include#include#include#include "..\include\drvstandard.h"#include "..\include\drvtool.h"// prototypes driver development#include "..\include\UniTCPIPImports.h" // prototypes and defines to TCP/IP communication library#include "..\include\unicode.h"#include "TsTCPAlarmItem.h"#define DRIVER_NAME_T("TSTCP")static TCHAR szDrvVersion[] = _T("1.1.01");unsigned long localtime_julian(long tim);int ServiceRequest( COM_RESP_REC& com_resp_rec );#define BUFSIZE1 512*1024CTciCons::CTciCons(void){nProtocol = PROTOCOL_DB2;pArchive = NULL;pSetup = NULL;pSetupExtra = NULL;memset( &CpcRespRec, 0, sizeof(CpcRespRec));memset( &Db2Params, 0, sizeof(Db2Params));memset( &Db2, 0, sizeof(Db2));memset( &Db1, 0, sizeof(Db1));dnl_buf = new unsigned char[BUFSIZE1];strncpy( CpcRespRec.com_req.idnum, "EM002", 10);memcpy( CpcRespRec.com_req.scode,"0000",4 );strncpy(CpcRespRec.com_req.phone_nbr, "T166.131.58.7/12345", 25);CpcRespRec.com_req.comport = 11;//CpcRespRec.com_req.baud = 9600;CpcRespRec.com_req.linktime = 0;CpcRespRec.com_req.retries = 3;strcpy( CpcRespRec.com_req.work_station_id,"EM002");CpcRespRec.com_req.rem_dev_type = 0;// FCUCpcRespRec.com_req.time_out = 10;CpcRespRec.com_req.com_type = 10;// tcp/ipDb2.bCompressed = 0;Db2.MaxDataBlockSize = 1024;Db2.MaxPacketSize = 8 * 1024;Db2.RemoteRespTimeoutSecs = 10;Db2.retries = 3;Db2.RemoteACKTimeoutSecs = 10;Db2.CharacterTimeoutSecs = 2;/*Db1.retries = 3;Db1Params.nCollectDays = 0;Db1Params.nDataResolution = 0;Db1Params.nReqType = 0;*/memset(&GlobalpbutRespRec, 0, sizeof(GlobalpbutRespRec));memset(&GlobalkdtRespRec, 0, sizeof(GlobalkdtRespRec));memset(&GlobalValve, 0, sizeof(GlobalValve));}CTciCons::~CTciCons(void){delete dnl_buf;if(pArchive)ReleaseArchive(pArchive);if(pSetup)delete pSetup;if(pSetupExtra)delete [] pSetupExtra;}////////////// Driver Configuration standard functions ///////////////////// The functions not declared are replace by default functionsint CTciCons::ProcessCommand(int cmd){char bfr[80];ULONG now;int opt=cmd;if(opt<0){if(nProtocol==PROTOCOL_DB1)opt=GetDB1Option();elseopt=GetDB2Option();}if(opt==0||opt==100) return 0;if(opt==1||opt==101){if(nProtocol==PROTOCOL_DB1){nProtocol=PROTOCOL_DB2;CpcRespRec.com_req.linktime=0;CpcRespRec.com_req.com_type=10;}else{nProtocol=PROTOCOL_DB1;CpcRespRec.com_req.linktime=1;CpcRespRec.com_req.com_type=0;}return -1;}CpcRespRec.com_req.dnl_buf=(char*)dnl_buf;switch(opt){case 2:BuildRegisterRequest(&CpcRespRec.com_req,&Db2,9,0,0,1); ServiceRequest(CpcRespRec);ShowRegisters();break;case 3:float tmp[3];tmp[0]=(float)1003;tmp[1]=(float)0.7;tmp[2]=(float)0;BuildRegisterDownload(&CpcRespRec.com_req,&Db2,9,0,1,1,(char *)tmp,4);AddRegisterDownload(&CpcRespRec.com_req,9,0,4,1,(char *)(tmp+1),4);ServiceRequest(CpcRespRec);ShowStatus();break;}delete CpcRespRec.rsp_buf;memset(bfr,0,sizeof(bfr));gets(bfr);if(strlen(bfr)==0) return -1;return atoi(bfr);}int CTciCons::GetDB1Option(){}int CTciCons::GetDB2Option(){int rtn = 0;char buffer[25];printf( "_____________________________ \n");//printf( "DB2 Protocol - Choose an Option!\n");printf( "Ready To Poll!\n");printf( "0) To quit\n");//printf( "1) Switch to DB1\n");printf( "3) Read Register\n");printf( "4) Write Register\n");memset(buffer, 0, sizeof(buffer));gets(buffer);if(strlen(buffer) == 0) return 0;return atoi(buffer);}And the showing missing file is "exinfo.h" 解决方案 You have to make sure the file is in the compiler search path. For instance with Visual Studio 2005, click on Tools->Options menu item, then select Projects And Solutions->VC++ Directories, choose Include Files in the list just below Show Directories For: label and finally add your include file folder.Solution 1 is correct (see that one first). If that doesn''t fix your problem however, you might have a infinite loop in your header includes. If you include header1.h, which includes header2.h, which includes header1.h again, the compiler gets upset. You can get indemnity from this with: - ensuring you don''t have include loops manually - #pragma once - header guard blocks. 这篇关于包含文件存在但再次显示致命错误C1083:无法打开包含文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云! 06-11 22:58