作者:朱金灿

 

      今天同事问我一个有点诡异的问题,就是他用VS C++2005 编译的程序在按F5 调试时总是起不来,出现“应用程序初始化失败问题”的对话框,而这个程序在我的机子上可以顺利运行。首先我在应用程序类的 InitInstance 函数设置了断点,然后按F5 调试运行,但是程序并没有进入这个函数。然后我又在应用程序类全局变量定义处设置断点,但是程序还是没有进入。我感觉这个可能是VS 2005 的安装有问题。但同事告诉我他机子上其它用VS C++ 2005 编的程序可以正常运行。思考了一会,我认为问题可能存在于我和同事的编译环境不一致上:我的编译环境是英文版VS 2005 (带sp1 ),同事的是中文版VS 2005( 不带sp1) 。我怀疑程序所依赖的动态库在我的机子上编译过,但是在同事的机子上直接使用会有问题,毕竟是在不同编译环境编译出来的。于是我让同事把所有依赖的库在他机子上都编译一遍,结果程序可以正常调试运行。后来我想起我在同事的VS2005 的输出窗口上发现在加载一个dll 出现异常退出,这证实了我的判断是对的。