在临摹Ex20b示例程序的时候碰到以下问题:
1 在Ex20b工程中追加Ex20a.lib文件的时候,.NET 2005要求创建一个用户自定义的构建规则(Custom Build Rules)
我直接选择“No”,不创建Rules,其实自己不知道该选什么,暂时啥都不做比较稳妥。
2 Ex20b编译通过后,运行时刻报错。
.NET 2005自动设置的断点停留在以下代码处:(附上完整图片)
pFrameClass->IsDerivedFrom(RUNTIME_CLASS(CFrameWnd)));
起初以为是步骤1中没有创建构建规则引起的,为了证明这个假设,我又把光盘中的示例代码搬出来,进行了对比。
但是事情并没有想象中那样顺利进行,使用光盘中的示例代码编译通过后,在运行时出错,提示说找不到mfc70d.dll文件。
网上下载了该文件以后,又提示说找不到其他dll文件。
很无奈,明显是.NET技术内幕中使用的IDE环境与我的.NET 2005的版本有较大的差别(网上说该DLL在.NET2002中有用到),但是版本上的差异也不至于让我无法用.NET2005完成Ex20b程序吧。
在对Ex20a程序进行重新编译成DLL的时候,一个念头突然在脑海中闪过。
Ex20a的Project属性中,我设定了不使用Unicode字符集,那会不会Ex20b的Project属性也要这样设定?
为了证明这个假设,我尝试修改了Ex20b的Project属性:(附上完整图片)
保存后编译并执行,整个程序顺利运行。
总结:
当发生RunTime Error的时候,除了对每个关联Project中的代码进行精查以外,还要考虑编译选项的设定是否一致。
在以后的临摹中,我会暂时把Project中的字符集设定开关统一设定成Not Set的。