关于调试(debug)版本与发行(release),请参考下面连接:https://blog.csdn.net/ithzhang/article/details/7575483,写的很详细,其中有几点我摘录过来:
Debug与Release不同的问题在刚开始编写代码时会经常发生,99%是因为你的代码书写错误而导致的,所以不要动不动就说系统问题或编译器问题,努力找找自己的原因才是根本。我从前就常常遇到这情况,经历过一次次的教训后我就开始注意了,现在我所写过的代码我已经好久没遇到这种问题了。下面是几个避免的方面,即使没有 这种问题也应注意一下:
1. 注意变量的初始化,尤其是指针变量,数组变量的初始化(很大的情况下另作考 虑了)。
2. 自定义消息及其他声明的标准写法
3. 使用调试宏时使用后最好注释掉
4. 尽量使用 try - catch(...)
5. 尽量使用模块,不但表达清楚而且方便调试。
我在编译好的程序中,代码编写也是按照规范编写,在debug情况下运行的很好,打包之后在别的计算机运行的好好的,但是安装到其他笔记本电脑或者台式机在软件某个按键按下时候出现以下错误:
Debug Asertion Failed!
file:f:\dd\vctolls\vc7libs\atlmfc\include\afxcoo.inl
Line:356
思来想去是不是debug版本在断言方面有问题,是不是出现野指针,网上参考了好多,但是看了自己代码没有问题,所以想着用release版本发行,但是从debug到release版本转换过程中出现很多错误,如下:
1、>c:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2121) : fatal error C1082: Cannot close compiler intermediate file: '': Not enough space
解决:找了该路径下面的文件显示的是:void AppendFormatV( __in __format_string PCXSTR pszFormat, va_list args )
{
ATLASSERT( AtlIsValidString( pszFormat ) );
int nCurrentLength = GetLength();
int nAppendLength = StringTraits::GetFormattedLength( pszFormat, args );
PXSTR pszBuffer = GetBuffer( nCurrentLength+nAppendLength );
#if _SECURE_ATL
2、运行库不一致问题
1、在共享 DLL 中使用 MFC(运行时库肯定要用动态的运行时库)
Debug配置 --> Multi-threaded Debug DLL(/MDd)
Release配置 --> Multi-threaded DLL(/MD)
2、在静态库中使用 MFC(运行时库肯定要用静态的运行时库)
Debug配置 --> Multi-threaded Debug(/MTd)
Release配置 --> Multi-threaded(/MT)
3、There was a failure while initializing the Microsoft Visual SourceSafe source control provider. You cannot use this provider to perform source control operations.
在Tools—>Options—->Source Control—>Current Source Control plug-in:设置为NONE
4、ClassView标签页里不显示类信息或者显示不全的解决方案
解决:打开工程所在项目----->找到一个以.ncb结尾的文件,将其删除----->再次打开工程----->看到完整的类信息了----->解决。
按上面步骤做了之后,问题就解决了。
NCB是 “No Compile Browser”的缩写,其中存放了供ClassView、WizardBar和Component Gallery使用的信息,由VC开发环境自动生成。无编译浏览文件。当自动完成功能出问题时可以删除此文件。编译工程后会自动生成。
现在没有运行正常,只是还没有试试能否在别的计算机安装之后不出现问题。测试之后再给评价。