在Visual Studio 2005环境下,利用MFC编制的程序在没有装有Visual Studio 2005的平台上运行,会出现“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”的错误。
原因在于,MFC选项中设置的是“在共享DLL中使用MFC”,致使程序在没有装VS 2005的平台上会因为缺乏必要的DLL而无法启动。
我的解决方法是拷贝必需的DLL到MFC程序目录下。
第一步,在编译MFC程序时,产生的中间文件中会有“xxx.exe.intermediate.manifest”,打开该文件,会发现里面内如大致如下:
<?xml version='1.0' encoding='UTF-8'standalone='yes'?>
<assemblyxmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.CRT'version='8.0.50608.0' processorArchitecture='x86'publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.MFC'version='8.0.50608.0' processorArchitecture='x86'publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>
文件中有Microsoft.VC80.CRT,假设VS 2005安装在D盘中的VS2005目录,那么Microsoft.VC80.CRT则位于D:/VS2005/VC/redist/x86中,拷贝Microsoft.VC80.CRT中的所有文件到编制的MFC程序目录下,对于Microsoft.VC80.MFC也是同理,此外,务必也要把xxx.exe.intermediate.manifest拷贝到编制的MFC程序目录下。
如果编制的程序中同时有exe文件和dll文件,那么exe文件和dll文件都要按上述步骤进行,dll的xxx.dll.intermediate.manifest文件也要拷贝。