【VC++开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了VC++开源代码-关于bin和obj文件夹 - 互联网的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
关于bin和obj文件夹 bin是放最终
代码的目录 obj就放中间
代码的目录 release和debug是不同的运行方式 debug会增加调试
代码方便调试。
调试完后用release版本发布没有调试
代码减小程序体积加快执行速度 一、先说说编译 编译一个源程序文件要经过语法、类型甚至要判断执行时的可行性等。
是一个对文件多次扫描的过程最后还有
代码优化的过程。
会有一大堆的中间文件产生。
vc6下的一个mfc项目obj目录里会有好几M的中间临时文件。
再复杂点一个project有图片声音等资源文件要调用其他DLL类库可能是.net组件可能是com还可能由多个.cs文件组成。
要把这么多东西连接在一起。
以前在DOS下用C或PASCAL要先编译成.obj文件再用link.exe连接在一起才是一个exe文件。
记得pascal还是fortran要用两个编译程序才能得到一个.obj的中间文件 结论编译需要大量的中间文件存放临时结果为下一步做准备。
C是面向对象的复杂度更高obj目录就是用来存放临时文件的 二、debugrelease debug调试你在程序中设置了断点为什么vs.net知道在那里要停下来当你把鼠标移到某个变量上vs.net就会显示它当时的值 因为编译器在
代码中添加了许多调试需要的
代码可以让vs.net得到返回给你。
这些
代码当然是要占用空间和时间的在你的程序调试完了后可以正确运行了。
完全可以去掉这些
代码这时候就应该用Release模式了。
不管Debug还是Release模式都要编译都有中间临时
代码产生所以obj目录下有debug release目录。
两种模式编译的结果就放在bin目录下。
编译完后中间临时
代码是没什么用的了所以一般不管obj目录里的东西 C项目中的bin目录和obj目录的区别以及Debug版本和Release版本的区别 1.关于bin目录和obj目录 Bin目录用来保存项目生成后程序集它有Debug和Release两个版本分别对应的文件夹为bin/Debug和bin/Release这个文件夹是默认的输出路径我们可以通过项目属性-配置属性-输出路径来修改。
obj目录是用来保存每个模块的编译结果在.NET中编译是分模块进行的编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。
因为每次编译时默认都是采用增量编译即只重新编译改变了的模块obj保存每个模块的编译结果用来加快编译速度。
是否采用增量编译可以通过项目属性-配置属性-高级-增量编译来设置。
2.是否复制到本地的设置
问题 在添加引用时.
NET会记录添加的引用绝对路径这些设置保存在每用户文件中Solution.csproj.user可以通过记事本打开查看。
也可以在项目属性-通用属性-引用路径里面查看。
如果设置复制到本地为true在生成项目时会自动拷贝该DLL到项目生成文件夹中bin目录否则不会拷贝。
在生成项目时对所添加的引用的是绝对路径而在运行时
程序集默认只在当前所在的路径下去找。
要修改引用的路径必须通过编程的方法去实现。
使用References对象。
当在程序集的属性页中选Debug模式时设置如下 当选择Release模式时设置如下 两者的不同点如下 项目DebugRelease 条件编译常数DebugTraceTrace 优化
代码FalseTrue 输出路径binDebugbinRelease 生成调试信息TrueFalse Debug模式下生成的程序集为调试版本未经优化在bindebug目录中有两个文件除了要生成的.exe或.dll文件外还有个.pdb文件这个.pdb文件中就记录了
代码中的断点等调试信息Release模式下不包含调试信息并对
代码进行了优化binrelease目录下只有一个.exe或.dll文件。
注意若要更改项目的生成模式不能只从项目属性页上点配置下拉框更改那样不起作用必须点右上角的配置管理器按钮才能更改。
关于Debug和ReleaseMSDN里面是这么说的 Visual Studio项目对程序的发布和调试版本分别有单独的配置。
顾名思义生成调试版本的目的是用于调试而生成发布版本的目的是用于版本的最终分发。
如果在Visual Studio中创建程序Visual Studio将自动创建这些配置并设置适当的默认选项和其他设置。
在默认设置下 程序的调试配置用全部符号调试信息编译不进行优化。
优化会使调试复杂化因为源
代码和生成的指令间的关系更加复杂。
程序的发布配置被完全优化不包含任何符号调试信息。
调试信息可在单独的PDB文件中生成。