MFC写的软件运行在没有安装vc运行库的操作系统上,报了如下图的错误。
百度说是缺少vc动态库,于是下载了运行库合集安装。安装成功运行程序发现还是报这个错误,这就令人费解了。
特意去查看了一下工程配置
按理说这样的设置,应该是不需要运行库支持的,可以独立运行的。那为何又报0xc0150002这个错误呢。
经过我多方排查,发现自己调用了自己写的一个DLL库。这个库是MFC的拓展DLL
msdn中说:
MFC 扩展 DLL 是通常实现从现有 Microsoft 基础类库类派生的可重用类的 DLL。扩展 DLL 是使用 MFC 动态链接库版本(也称作共享 MFC 版本)生成的。只有用共享 MFC 版本生成的 MFC 可执行文件(应用程序或规则 DLL)才能使用扩展 DLL。
所以这个DLL只能是动态编译的,需要运行库的支持。还好这个动态库的功能并不多,我建了一个同名的MFC静态编译的DLL工程,将原来的文件拷贝进新的工程里。编译出新的DLL就是静态的。用它代替之前的DLL,问题解决了!