请问关于MFC静态链接和使用共享MFC DLL

请教关于MFC静态链接和使用共享MFC DLL
请教大家
我平时都用C#开发的,偶而用vc6 就是写个dll
可以保护关键代码,另外使用mfc做一些底层操作也方便

现在想问的是,如果用MFC静态链接,那么win7/8/8.1是不是可以直接用了,不用提供mfc42.dll什么的。

用共享MFC DLL 我发现xp上能用 win7以后的平台都用不了,需要改用MFC静态链接

问题来了,是不是只要是MFC静态链接 xp及以后版本的windows都兼容?

注:不想装vc2010什么的,因为后面版本的c++支持.net不想要,速度又慢
------解决思路----------------------
静态链接理论上在后续的系统中是可以兼容的。
另外,即使是动态链接,LZ把相应的dll文件拷贝出来,跟程序放在一起,依然可以正常运行,不需要额外安装什么。
静态链接后边升级比较麻烦。建议动态链接,拷贝相应的dll
------解决思路----------------------
引用:
Quote: 引用:

静态链接理论上在后续的系统中是可以兼容的。
另外,即使是动态链接,LZ把相应的dll文件拷贝出来,跟程序放在一起,依然可以正常运行,不需要额外安装什么。
静态链接后边升级比较麻烦。建议动态链接,拷贝相应的dll


一开始我也是用动态链接MFC的,还用Depends查了所有需要的用到的dll 一起拷贝了过去

但是win8死活用不了,不知道是怎么回事请问关于MFC静态链接和使用共享MFC DLL


其实吧,说简单点儿,静态连接MFC就是在编译的时候把MFC相关库也个编译进去,而动态链接就不把MFC相关运行库编译进去。
这样一来,理论上静态连接MFC库的应用程序或者dll无论在有无MFC运行环境的机器上都可以运行,而动态链接MFC的只能在有MFC运行库的机器上可以运行,其它的不行!

举个例子说吧,很多时候我们会遇到这种情况:在开发者机器上用VS写一个MFC应用程序,编译release之后可以正常运行,但在另外一台没有VS开发环境的机器上却运行不了!这种情况就是静/动态连接MFC库造成的