最近写了个程序,MFC的,这东西写起来不难,用1天即可入门,写个计算器,文件管理器什么的,但是遇到了一个问题,怎么把写好的程序打包成EXE文件,在没有VS的环境也能执行这是个问题。其实海通麻烦的,尤其是用了第三方库后挺麻烦的。(所有内容参考网上结果,此处为总结)
1.打包中release 和 debug 的区别?
Debug:调试版本,包括调试信息,所以其容量一般来说比Release大很多,并且不进行任何的优化(优化会使得调试信息复杂化,因为源代码和生成的指令之间关系会更复杂),以便于程序员进行调试。
Debug模式下生成两个文件:除了**.exe或者.dll**文件外,还有一个.pdb文件,该文件记录了代码中断点等调试信息。
Release:发布版本,不对源代码进行调试,编译时对应用程序的速度进行优化,使得程序在代码大小和运行速度上都是最优的(调试信息可以在单独的PDB文件中生成)。
Release模式下生成一个文件**.exe或.dll**文件。
2.C/C++-------》代码生成运行库 MDd/MT/MD/Mtd 是什么?
1、/MD 与 /MT 用于Release 版本,前者表示链接时,不链接VC的运行时库(msvcrt.lib),而采用动态库(msvcrtXX.dll,其中XX表示使用的版本);相应地,后者则表示静态链接VC的运行时库,这样的结果是链接生成的的目标模块体积明显比前者要大一些。
2、/MTD与/MDD 用于Debug版本,其它规则同上。
3.SDL检查是什么?
微软正在积极开发的Visual Studio11,不断寻找方法,以提高安全相关的功能。作为这项工作的一部分,我们正在更新一些增强/ GS编译器开关,这是默认,使基层的代码生成的安全功能,超越了现在熟悉的基于cookie的堆栈溢出保护。这些在以后的文章,我们将提供一些细节。
安全开发生命周期(SDL)/ GS编译器能协助安全软件开发的范围之外的建议。这些从具体的代码生成功能,如使用安全相关的编译器警告和更多的一般性建议适当初始化或消毒指针strict_gs_check范围。
这是第一次,我们希望能提供一个中央机制,使这些额外的安全性支持通过一个新的/ SDL开关。 / SDL的影响是双重的:
- / SDL SDL强制编译器警告是在编译过程中的错误处理。
- / SDL使额外的代码生成功能,如增加了栈缓冲区溢出保护和指针初始化或消毒,在有限的一套明确界定的情况下的范围。
这种双管齐下的办法,反映了我们的信念,安全软件是最好的实现相结合的检测,并固定在开发过程中代码中的错误与安全缓解的部署,将显着增加难以利用任何剩余的错误。
/ SDL的编译器开关默认是禁用的,并且可以在Visual Studio的用户界面,轻松地打开当前项目的属性页,并访问配置属性 - > C / C ++ - >常规选项启用。
https://blog.csdn.net/u012043391/article/details/54972127