无论是用VC++6.0开发的MFC项目,还是VS开发的MFC项目,如果需要进行项目的发布,必须要进行静态编译,生成release版本。然而在实际环境中,有时候开发人员并没有注意,直接动态编译,然后把相应的exe可执行文件直接放到某Windows平台下直接运行,导致该exe文件无法运行,说是缺少相应的动态链接库。
遇到类似问题,解决思路如下:
方法一:拷贝DLL文件方式(以VC++6.0为例)
1. 用depends工具查看该exe文件需要哪些动态链接库,depends上面显示的黄色标志,说明缺少相关的dll文件,并将这些dll放到与exe文件同一目录下。
2.如果还是运行不了,说明该环境缺少mfc相关的动态链接库,根据往常经验,需要拷贝4个文件:MFC42.DLL MFC42D.DLL MSVCRT.DLL MSVCRTD.DLL 即可运行
方法二:重新编译原项目
1. 找到原项目的项目代码,在原项目中,重新编译,选择"使用MFC作为静态链接库"进行编译,生成release版本。这样就可以包含mfc的基本dll文件
2. 如果项目中,还包含第三方的动态链接库,则需要用depends工具进行查看,将显示黄色标志的dll添加到exe文件下的同一目录。
一般地,如果项目中没有涉及到第三方动态链接库,则用静态链接库进行编译,都可以直接运行。如果涉及到第三方动态链接库,除了要包含第三方dll文件外,还需要包含额外的其他文件,
在VS2008中,就需要额外的 MFC90D.DLL MSVCR90D.DLL 。(这些都可以利用depends工具进行查看)