ncb文件是干什么的|c++程序编译后自动生成的文件有什么用分别解释下



㈠ 请问.NCB是什么文件是不是可以删除

完全可以删除,在有些情况下,比如AutoComplete功能突然不灵了,就要将它删除掉。除了.cpp, .h, .rc, .dsp, .dsw 文件及res文件夹里的文件,其他文件都可删除掉,在压缩打包时可节省很多空间。

㈡ vc 工程中.ncb文件在哪有什么用

你说的删了NCB也不行,肯定是你程序有问题了,VC程序解析不出来了 你用的应该是VC6吧,换个高版本的试一下,以前VC6也碰到过,但用了2003及后续版本再也没出过问题了

㈢ 用VC++ 6.0,建立工程后会产生.ncb文件,导致成员函数不跳出。如何能不产生.ncb文件呢

NCB不是代码,所以不可能对代码的执行造成影响,这个文件是用于代码自动完成用的,如果输入时不能正常提示,可以关闭工程后删除NCB文件,重新打开工程后会再次自动生成.

㈣ 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 中。插入的信息包括类型信息,但不包括函数定义等符号信息。因此,即使每个源文件都包含公共头文件(如 <windows.h>),这些头文件中的 typedef 也只存储一次,而不是在每个 OBJ 文件中都存在。 链接器将创建 project.PDB,它包含项目的 EXE 文件的调试信息。project.PDB文件包含完整的调试信息(包括函数原型),而不仅仅是在 VCx0.PDB 中找到的类型信息。这两个 PDB 文件都允许增量更新。链接器还在其创建的 .exe 或 .dll 文件中嵌入 .pdb 文件的路径。 Visual Studio 调试器使用 EXE 或 DLL 文件中的PDB 路径查找 project.PDB 文件。如果调试器在该位置无法找到 PDB 文件或者如果路径无效(例如,如果项目被移动到了另一台计算机上),调试器将搜索包含 EXE 的路径,即在“选项”对话框(“调试”文件夹,“符号”节点)中指定的符号路径。调试器不会加载与所调试的二进制不匹配的 PDB。5, ILK文件在增量链接时,LINK 更新在第一次增量链接期间创建的 .ilk 状态文件。该文件和 .exe文件或 .dll 文件具有相同的基名称,并具有扩展名 .ilk。在后面的增量链接期间,LINK 更新 .ilk 文件。如果缺少 .ilk 文件,则 LINK 执行完全链接并创建新的 .ilk 文件。如果 .ilk 文件无法使用,则 LINK 执行非增量链接。有关增量链接的详细信息,请参见渐进式链接(/INCREMENTAL) 选项。6, MAP文件Windows和linux系统下都有map文件,map文件一般是用来保存符号的地址信息。这里的符号一般是指函数名及变量(局部、全局)。根据这个地址信息,便可以把地址翻译成相应的符号,很多系统工具、debug方法都要用到这种信息。 (一)一个程序编译完以后内容会分成两大类保存,一类是code,一类是data:(1)code指程序代码,常存在.text section(2)data指存程序中声明的变量,常存在.data section,未初始化的变量会被存在.bss section。 (二)Windows(1)单个模块的map文件在Windows下每一个模块(dll/exe)对应一个map文件,只需编译时打开相应的选项即可。visual studio中方法:右击工程,选择Properties,然后选择 Configuration Properties -Linker – Debugging,将Generate Map File项改成Yes。编译后在debug/release目录里便可以找到与应用程序同名的map文件。 如下为map文件内容:Timestamp is4b9603e2 (Tue Mar 09 16:16:34 2010) //这个是时间戳,每次编译都不同,后面符号对应的地址一般也不同。 Preferred loadaddress is 00010000 //这是编译时的预装载地址,实际上模块被加载的地址可能跟这个不同,所以来确定某个地址对应哪个符号信息的时候,还需要知道该模块加载在内存的真正起始地址,然后根据偏移量来确定。 Start Length Name Class0001:00000000 001c3950H .text CODE ==》存放程序代码0003:000008b8000af67cH .data DATA ==》初始化的变量0003:000aff40003930b1H .bss DATA ==》未初始化的变量 (2)操作系统总的map文件:不知道有没有。 (3)mpbinmpbin是一个反汇编工具,可以输出exe/dll文件的许多信息。mpbin /allyourmolename > a.txt 可以把所有的信息保存在一个a.txt中,里面可以找到时间戳、原debug路径信息及函数列表等。 如下:FILE HEADERVALUES 1C2 machine (Thumb) 6 number of sections 49EC0BAE time date stamp Mon Apr 2013:44:14 2009 //时间戳 0 file pointer to symbol table 0 number of symbols E0 size of optional header 2102 characteristics Executable 32 bit word machine DLLOPTIONAL HEADERVALUES 10B magic # (PE32) 9.00 linker version 53E00 size of code 76A00size of initialized data 0 size of uninitialized data 502ACentry point (100502AC) 1000 base of code 55000 base of data 10000000 image base (10000000 to100CDFFF) 1000 section alignment 200 file alignment 5.01 operating system version 0.00 image version 5.01 subsystem version 0 Win32 version CE000 size of image 400 size of headers其中 10000000 image base (10000000 to 100CDFFF)是重要的信息,与map file中的 Preferred load address is10000000 意义相同。 DebugDirectoriesTime Type Size RVA Pointer ——– —— ——– ——– ——– 49EC0BAE cv 81 000020FC CFC Format: RSDS, {A5C699F0-C26D-427E-BC54-3504731BA9B8}, 1,d:\Projects\Final\MyUsbToPc_CPL\MyUsbToPc\Windows Mobile 6 Professional SDK(ARMV4I)\Debug\MyUsbToPc.pdb //原编译路径Begin End Prolog Excpt 32bit Fixup 【Function Name】 0000000010001000 10001040 10001010 N Y Y DllMain0000000810001040 10001064 10001050 N Y Y [email protected]@[email protected]@@Z (int __cdecl InitApplet(struct HWND__*))0000001010001064 10001068 10001064 N Y Y [email protected]@YAXXZ (void __cdecl TermApplet(void))0000001810001068 100013DC 10001078 N Y Y CPlApplet00000020 1000141C 100014B4 10001420 N Y Y _DllMainCRTStartup00000028100014B4 100014BC 100014B4 N Y Y GetCurrentProcess00000030100014BC 100014F0 100014C0 N Y Y00000038 100014F0 1000155C 100014F4 N Y Y _cinit00000040 1000155C 10001660 10001560 N Y Y0000004810001660 10001678 10001664 N Y Y exit0000005010001678 10001690 1000167C N Y Y _exit0000005810001690 100016AC10001694 N Y Y _cexit00000060 100016AC 100016F8 100016B0 N Y Y _c_exitbegin栏对应的地址与map里的地址是一致的,非常类似于map文件。【注意:很多exe或dll在编译时时将此信息隐藏的,Function Name会变成空的】 (三)Linux(1)单个模块的map文件暂还不清楚,大家知道的请告知。(2)操作系统总的map文件linux系统编译Image后会生成一个system.map,里面存了被编译进内核的符号信息,不同次的编译生成的system.map会有差异。因为是操作系统的符号信息,装载的地址都是固定的,所以不像windows单个模块那样靠偏移量定位,直接通过地址就可以直接找到对应的符号。其内容的重要的几个符号如下:_stext//代码段开始_etext//代码段结束 __data_start//初始化的数据开始_edata//初始化的数据结束 __bss_start//未初始化数据开始_end//全部结束Linux相对windows有个很重要的不同是,linux启动后在proc\kallsyms里也有一份类似Map文件的信息,cat命令可看到其内容,有了这个就可以得到任何一个内核的符号(变量及函数名)的地址信息,而不需要在编译完内核后特意保存map文件,这真是一个巨大的宝藏。而且,proc\kallsym的信息比system.map多,在最后会有mole部分的符号信息,这些信息会随着系统的变化而变化。(3)nm命令nm命令用来显示某个可执行文件的符号信息。符号信息中会包含全局变量(比如下面的xyz)和函数名(比如下面的main),还有一些编译器插入的符号(比如下面的__data_start,__bss_start) 第二列表示符号的属性,其中大写代表global,小写代表localUsage: nm[option(s)] [file(s)]List symbols in[file(s)] (a.out by default).示例: nm helo 08049f20 d_DYNAMIC08049ff4 d_GLOBAL_OFFSET_TABLE_080484ec R_IO_stdin_used w _Jv_RegisterClasses08049f10 d__CTOR_END__08049f0c d__CTOR_LIST__08049f18 D__DTOR_END__08049f14 d__DTOR_LIST__08048500 r__FRAME_END__08049f1c d__JCR_END__08049f1c d__JCR_LIST__0804a020 A__bss_start0804a00c D__data_start080484a0 t __do_global_ctors_aux08048340 t__do_global_dtors_aux0804a010 D__dso_handle w __gmon_start__0804849a T __i686.get_pc_thunk.bx08049f0c d__init_array_end08049f0c d__init_array_start08048430 T__libc_csu_fini08048440 T__libc_csu_init U [email protected]@GLIBC_2.00804a020 A _edata0804a028 A _end080484cc T _fini080484e8 R_fp_hw08048298 T _init08048310 T_start0804a020 bcompleted.66350804a00c Wdata_start0804a024 bdtor_idx.6637080483a0 t frame_mmy080483c4 T main U [email protected]@GLIBC_2.00804a014 D x0804a018 D y0804a01c D zhelo.c如下:#include<stdio.h> int x = 10;int y = 20;int z = 30; extern int__data_start;//这里引用了编译器插入的符号 int main(void){ int *ds = &__data_start; printf("%p\n", ds); printf("now x = %d\n", x); ds+=3; *ds = 100; printf("now x = %d\n", x);}7, IDB文件The compiler savesstate information from the first compile in the project’s .IDB file (the default name is project.IDB or VC60.IDBfor files compiled without a project). The compiler usesthis state information to speed subsequent compiles.8, SLN文件Visual Studio.Solution 通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。

㈤ 请问一下VC++创建的项目当中,dsp,dsw,ncb,debug文件夹,plg,opt这些文件分别是指什么意思呢

opt 工程关于开发环境的参数文件。如工具条位置等信息; .aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他. .clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘提示你是否重建. .dsp (DeveloperStudio Project):项目文件,文本格式,不过不熟悉的话不要手工修改.DSW(DeveloperStudio Workspace)是工作区文件,其他特点和DSP差不多. .plg 是编译信息文件,编译时的error和warning信息文件(实际上是一个html文件),一般用处不大.在Tools->Options里面有个选项可以控制这个文件的生成. .hpj (Help Project)是生成帮助文件的工程,用microsfot Help Compiler可以处理. .mdp (Microsoft DevStudio Project)是旧版本的项目文件,如果要打开此文件的话,会提示你是否转换成新的DSP格式. .bsc 是用于浏览项目信息的,如果用Source Brower的话就必须有这个文件.如果不用这个功能的话,可以在Project Options里面去掉Generate Browse Info File,可以加快编译速度. .map 是执行文件的映像信息纪录文件,除非对系统底层非常熟悉,这个文件一般用不着. .pch (Pre-Compiled File)是预编译文件,可以加快编译速度,但是文件非常大. .pdb (Program Database)记录了程序有关的一些数据和调试信息,在调试的时候可能有用. .exp 只有在编译DLL的时候才会生成,记录了DLL文件中的一些信息.一般也没什么用. .ncb 无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。build后会自动生成。Debug文件夹是编译程序产生的中间文件,包括生成的exe文件都在这个文件夹下面!

㈥ vc++生成的Debug,cpp,html,ncb,opt,dsp,dsw文件是干什么的,有什么区别

给你个比较全的,您慢慢看噢~.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文件就能了解自动化对象的使用方法。.WAV:声音资源文件。宋涛

㈦ vc工程下的.ncb文件是什么

.ncb 无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。build后会自动生成。 🙂

㈧ C语言建立工程后同时又几种格式的文件 请问这些文件是干嘛的 比如ncb,plg

文件扩展名与编译器有关。.ncb 是2进制文件,ClassView 用到它,它的内容与当前用的计算机有关。 .plg 是log文件,我不懂中文意思,是不是叫流水账文件?你可以用IE或别的网页浏览器看它,它实际上是 HTML 文件。其它扩展名文件很多,没哪个程序员去关心每种文件干嘛的,特别是像 .ncb,.plg 这种中间文件。程序员只需关心源文件和最终编译出来的文件。大部分扩展名可以在这里查看:https://msdn.microsoft.com/en-us/library/3awe4781.aspx

㈨ 大哥,请问你的NCB文件是怎么打开的。我用VC6.0运行完程序后生成了,无法打开属性为NCB的文件

ncb文件是无法打开的。通常是源代码智能提示时使用的,可以删掉,它会自己重建。


赞 (0)