c++程序编译后自动生成的文件有什么用,分别解释下
1, PCH文件预编译头文件(一般扩展名为.PCH),是把一个工程中较稳定的代码预先编译好放在一个文件(.PCH)里.这些预先编译好的代码可以是任何的C/C++代码--甚至可以是inline函数,只它们在整个工程中是较为稳定的,即在工程开发过程中不会经常被修改的代码.为什么需要预编译头文件?一言以蔽之:提高编译速度.一般地,编译器以文件为单位编译,如果修改了一工程中的一个文件则所有文件都要重新编译,包括头文件里的所有东西(eg.Macro宏,Preprocessor预处理),而VC程序中,这些头文件中所包括的东西往往是非常大的,编译之将占很长的时间.但它们又不常被修改,是较稳定的,为单独的一个小文件而重新编译整个工程的所有文件导致编译效率下降,因此引入了.PCH文件.如何使用预编译头文件以提高编译速度?要使用预编译头文件,必须指定一个头文件(.H),它包含我们不会经常修改的代码和其他的头文件,然后用这个头文件(.H)来生成一个预编译头文件(.PCH)VC默认的头文件就是StdAfx.h,因为头文件是不能编译的,所以我们还需要一个.CPP文件来作桥梁,VC默认的文件为StdAfx.cpp,这个文件里只有一句代码就是:#include "StdAfx.h".接下来要用它生成.PCH文件,涉及到几个重要的预编译指令:/Yu,/Yc,/Yx,/Fp.简单地说,/Yc是用来生成.PCH文件的编译开关.在Project->setting->C/C++的Category里的Precompiled Header,然后在左边的树形视图中选择用来编译生成.PCH文件的.CPP文件(默认即StdAfx.cpp)你就可以看到/Yc这个开关,它表示这个文件编译了以后是否生成.PCH文件(可能/Yc的c表示create)./Fp指令指定生成的.PCH文件的名字及路径(可能/Fp的p代表path)./Yu的u即use使用,工程中只要包括了.H文件的文件都会有这个/Yu指令.如果选择自动Automatic。
的话则原来为/Yc的地方就换成了/Yx指令.如果选择自动,则每次编译时编译器会看以前有没有生成过.PCH文件,有则不现生成否则就再次编译产生.PCH文件.注意:A,实际上,由Appzard项目向导生成的默认的头文件及CPP文件StdAfx.h和StdAfx.cpp可以是任何名字的.原因很简单.但如果你要这样做就要记得修改相应的Project->setting。下的几个预编译指令(/Yc,/Yu,/Yx,/Fp)的参数.B.在任何一个包括了将要预编译的头文件而使用了.PCH文件的工程文件的开头,一定必须要是在最开头,你要包含那个指定生成.PCH文件的.H文件(通过.CPP文件包括,默认为StdAfx.cpp),如果没包括将产生我最开头产生的错误.如果不是在最开头包括将产生让你意想不到的莫名其妙错误,如若不信,盍为试之?C.预编译文件.PCH生成之很耗时间,而且生成之后它也很占磁盘空间,常在5-6M,注意项目完成之后及时清理无用的.PCH文件以节约磁盘空间.D.如果丢了或删了.PCH文件而以后要再修改工程文件时,可将指定的/Yc的.CPP文件(默认为StdAfx.cpp)重新编译一次即可再次生成.PCH文件,不用傻傻的按F7或Rebuild All2, NCB文件.ncb 无编译浏览文件(no compile browser)。
当自动完成功能出问题时可以删除此文件。build后会自动生成3, OBJ文件目标文件,一般是程序编译后的二进制文件,再通过链接器和资源文件链接就成exe文件了。
OBJ只给出了程序的相对地址,而EXE是绝对地址。4, PDB文件程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。
当以 /ZI 或 /Zi(用于 C/C++)生成时,将创建一个 PDB 文件。 在 Visual C++ 中,/Fd 选项用于命名由编译器创建的PDB 文件。
当使用向导在Visual Studio 中创建项目时,/Fd 选项被设置为创建一个名为 project.PDB 的 PDB。 如果使用生成文件创建 C/C++ 应用程序,并指定 /ZI 或 /Zi 而不指定 /Fd 时,则最终将生成两个 PDB 文件: *VC80.PDB (更笼统地说就是 VCx0.PDB,其中 x 表示 Visual C++ 的版本。)
该文件存储各个 OBJ 文件的所有调试信息并与项目生成文件驻留在同一个目录中。 *project.PDB 该文件存储 .exe 文件的所有调试信息。
对于C/C++,它驻留在 \debug 子目录中。每当创建 OBJ 文件时,C/C++ 编译器都将调试信息合并到 VCx0.PDB 中。
插入的信息包括类型信息,但不包括函数定义等符号信息。因此,即使每个源文件都包含公共头文件(如 链接器将创建 project.PDB,它包含项目的 EXE 文件的调试信息。project.PDB文件包含完整的调试信息(包括函数原型),而不仅仅是在 VCx0.PDB 中找到的类型信息。 这两个 PDB 文件都允许增量更新。链接器还在其创建的 .exe 或 .dll 文件中嵌入 .pdb 文件的路径。 Visual Studio 调试器使用 EXE 或 DLL 文件中的PDB 路径查找 project.PDB 文件。如果调试器在该位置无法找到 PDB 文件或者如果路径无效(例如,如果项目被移动到了另一台计算机上),调试器将搜索包含 EXE 的路径,即在“选项”对话框(“调试”文件夹,“符号”节点)中指定的符号路径。 调试器不会加载与所调试的二进制不匹配的 PDB。5, IL。 APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度。 资源辅助文件。.BMP:位图资源文件。 .BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE)从原始浏览信息文件(.SBR)中生成,BSC文件可以用来在源代码编辑窗口中进行快速定位。用于浏览项目信息的,如果用source brower的话就必须有这个文件。 可以在project options里去掉Generate Browse Info File,这样可以加快编译进度。.C:用C语言编写的源代码文件。 .CLW:ClassWizard生成的用来存放类信息的文件。classwizard信息文件,ini文件的格式。 .CNT:用来定义帮助文件中“Contents”的结构。.CPP或.CXX:用C++语言编写的源代码文件。 .CUR:光标资源文件。.DEF:模块定义文件,供生成动态链接库时使用。 .DLG:定义对话框资源的独立文件。这种文件对于VC工程来说并非必需,因为VC一般把对话框资源放在.RC资源定义文件中。 .DSP:VC开发环境生成的工程文件,VC4及以前版本使用MAK文件来定义工程。项目文件,文本格式。 .DSW:VC开发环境生成的WorkSpace文件,用来把多个工程组织到一个WorkSpace中。工作区文件,与.dsp差不多。 .EXP:由LIB工具从DEF文件生成的输出文件,其中包含了函数和数据项目的输出信息,LINK工具将使用EXP文件来创建动态链接库。只有在编译DLL时才会生成,记录了DLL文件中的一些信息。 .H、.HPP或.HXX:用C/C++语言编写的头文件,通常用来定义数据类型,声明变量、函数、结构和类。.HLP:Windows帮助文件。 .HM:在Help工程中,该文件定义了帮助文件与对话框、菜单或其它资源之间ID值的对应关系。.HPJ:由Help Workshop生成的Help工程文件,用来控制Help文件的生成过程。 .HPG,生成帮助的文件的工程。.ICO:图标资源文件。 .ILK:连接过程中生成的一种中间文件,只供LINK工具使用。.INI:配置文件。 .LIB:库文件,LINK工具将使用它来连接各种输入库,以便最终生成EXE文件。.LIC:用户许可证书文件,使用某些ActiveX控件时需要该文件。 .MAK:即MAKE文件,VC4及以前版本使用的工程文件,用来指定如何建立一个工程,VC6把MAK文件转换成DSP文件来处理。.MAP:由LINK工具生成的一种文本文件,其中包含有被连接的程序的某些信息,例如程序中的组信息和公共符号信息等。 执行文件的映像信息记录文件。.MDP:旧版本的项目文件,相当于.dsp.NCB:NCB是“No Compile Browser”的缩写,其中存放了供ClassView、WizardBar和Component Gallery使用的信息,由VC开发环境自动生成。 无编译浏览文件。当自动完成功能出问题时可以删除此文件。 编译工程后会自动生成。.OBJ:由编译器或汇编工具生成的目标文件,是模块的二进制中间文件。 .ODL:用对象描述语言编写的源代码文件,VC用它来生成TLB文件。.OLB:带有类型库资源的一种特殊的动态链接库,也叫对象库文件。 .OPT:VC开发环境自动生成的用来存放WorkSpace中各种选项的文件。工程关于开发环境的参数文件。 如工具条位置信息等。.PBI、.PBO和.PBT:由VC的性能分析工具PROFILE生成并使用的三种文件。 .PCH:预编译头文件,比较大,由编译器在建立工程时自动生成,其中存放有工程中已经编译的部分代码,在以后建立工程时不再重新编译这些代码,以便加快整个编译过程的速度。.PDB:程序数据库文件,在建立工程时自动生成,其中存放程序的各种信息,用来加快调试过程的速度。 记录了程序有关的一些数据和调试信息。.PLG:编译信息文件,编译时的error和warning信息文件。 .RC:资源定义文件。.RC2:资源定义文件,供一些特殊情况下使用。 .REG:注册表信息文件。.RES:二进制资源文件,资源编译器编译资源定义文件后即生成RES文件。 .RTF:Rich Text Format(丰富文本格式)文档,可由Word或写字板来创建,常被用来生成Help文件。.SBR:VC编译器为每个OBJ文件生成的原始浏览信息文件,浏览信息维护工具(BSCMAKE)将利用SBR文件来生成BSC文件。 .TLB:OLE库文件,其中存放了OLE自动化对象的数据类型、模块和接口定义,自动化服务器通过TLB文件就能了解自动化对象的使用方法。debug 包里面有生成的可执行文件,及有关链接库的一些信息,调试信息等。 在app的之前,SetVisible应该是可以实现窗口激活的,你的可能是顺序和释放有问题,大致应该是这样: docs.Add(&tpl,&NewTemplate);//,&DocType,&Visble);// app.SetVisible(TRUE); //可见 位置不对,先注销掉 doc = app.GetActiveDocument(); sel = app.GetSelection(); sel=app.GetSelection();//获取文档的selection InlineShapes inlineshapes = sel.GetInlineShapes(); sel.MoveDown(COleVariant((short)4),COleVariant((short)41),COleVariant((short)0)); inlineshapes.AddPicture(BmpFilePath,COleVariant((short)FALSE),COleVariant((short)TRUE),&_variant_t(sel.GetRange()));//添加图片,并制定其位置为当前光标位置 inlineshapes.ReleaseDispatch(); sel.ReleaseDispatch(); doc.ReleaseDispatch(); app.SetVisible(TRUE);//在这里可见试试 app.ReleaseDispatch(); 记得word应该不需要其它操作,但如果实在不行,也可以用个无奈的办法,就是FindWindow查找顶层窗口找到Word窗口句柄,再用这个窗口句柄SetForegroundWindow就可以了。 大致就是: HWND hWord = ::FindWindow(NULL,窗口标题); ::SetForegroundWindow(hWord); 补充一下,在使用“无奈”办法之前,你可以去msword.h文件中找找App类的方法。我这里没有环境了,没法试,记得可能还有些方法,什么ShowThis或者ShowMe什么的,可以尝试一下。 大致思路: 利用Office Automation; 可以参考Microsoft Office Development with Visual Studio或者VSTO(visual studio tools for office); MSDN上有具体的interface。 搜索的时候,才有Range的find,如果有结果,再判断selection的font是否是Arial-BoldMT。 基本上,你如果能在Word里面用宏实现这个要求,那么外部程序的调用,只是一个automation的问题。因此可以参考word VBA的控制部分。 转载请注明出处51数据库 » vc自动生成word文档 关于c++编译生成文件
用VC++生成个Word怎么使之成为当前的焦点窗口
怎么实现vc中的word文档自动化实现