力为的技术博客

联系 聚合 管理
  154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks
用VC++/MFC开发的程序,在发布的时候会遇到找不到msvcp100.dll,mfc100u.dll等DLL的问题。有时候为了图省事,就直接从VS安装目录里面copy这些DLL连同程序一起发布。一般情况,这样不会有问题。直到有一天,程序在退出的时候遇到这样的crash问题:

---------------------------
XXX.exe - Application Error
---------------------------
The instruction at "0x5ad71531" referenced memory at "0x00000014". The memory could not be "read".
Click on OK to terminate the program
---------------------------
OK   
---------------------------

而目前我使用的开发的平台是Win7x64+VS2010/MFC, 但很多用户使用的是32位XP系统。上述问题恰好在xp上遇到。

解决办法:
http://www.microsoft.com/en-us/download/details.aspx?id=5555下载vcredist安装包,随同安装程序一同发布。
vcredist安装不安装,效果还真不同。
posted on 2012-08-21 22:34 力为 阅读(2177) 评论(3)  编辑 收藏 引用 所属分类: 3. VC&MFC&Qt

评论

# re: vcredist与程序发布 2012-08-22 10:01 万连文
具体原因是VC运行时多个版本之间不完全兼容,尤其是加入manifest后引入的Side By Side规则,WinSxs下有很多不同小版本的运行时。好的开发模式:
1.统一的开发环境统一编译,即使是不同小版本的VS IDE也可能引起问题。
2.静态链接CRT MFC等,这个是微软推荐的方式。  回复  更多评论
  

# re: vcredist与程序发布 2012-08-23 12:44 力为
@万连文 仅在XP下有此问题。另外程序有多个DLL,静态链接不太现实。
  回复  更多评论
  

# re: vcredist与程序发布 2012-08-24 19:09 秒大刀
@万连文
静态链接?您指的是MT方式吗?貌似微软现在更支持MD方式  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理