MFC应用程序无法正常启动(0x0150002)。请单击“确定”关闭应用程序

MFC写的软件运行在没有安装vc运行库的操作系统上,报了如下图的错误。

MFC应用程序无法正常启动(0x0150002)。请单击“确定”关闭应用程序

百度说是缺少vc动态库,于是下载了运行库合集安装。安装成功运行程序发现还是报这个错误,这就令人费解了。

特意去查看了一下工程配置

MFC应用程序无法正常启动(0x0150002)。请单击“确定”关闭应用程序

MFC应用程序无法正常启动(0x0150002)。请单击“确定”关闭应用程序

按理说这样的设置,应该是不需要运行库支持的,可以独立运行的。那为何又报0xc0150002这个错误呢。

经过我多方排查,发现自己调用了自己写的一个DLL库。这个库是MFC的拓展DLL

msdn中说:   
  MFC   扩展   DLL   是通常实现从现有   Microsoft   基础类库类派生的可重用类的   DLL。扩展   DLL   是使用   MFC   动态链接库版本(也称作共享   MFC   版本)生成的。只有用共享   MFC   版本生成的   MFC   可执行文件(应用程序或规则   DLL)才能使用扩展 DLL。   

所以这个DLL只能是动态编译的,需要运行库的支持。还好这个动态库的功能并不多,我建了一个同名的MFC静态编译的DLL工程,将原来的文件拷贝进新的工程里。编译出新的DLL就是静态的。用它代替之前的DLL,问题解决了!