软件在某些机器上出现该提示,具体原因是软件启动过程中调用dwmapi.dll最终指向msvcrt.dll的_except_handler4_common函数,由于dll版本不匹配出现该提示(估计是非正版XPsp3系统使用了vista的dwmapi.dll,但是出现类似问题的机器很多)
网上搜索答案是把dwmapi.dll换个名字就可以,这样确实可以解决问题,但是希望从软件内部来解决问题而不是更改用户机的文件名,求更好的解决办法。
网上搜索答案是把dwmapi.dll换个名字就可以,这样确实可以解决问题,但是希望从软件内部来解决问题而不是更改用户机的文件名,求更好的解决办法。
理论可行,试验无效。即使可以这样用也面临2个问题:
1、软件包体积增大。
2、vista下的msvcrt.dll在xp下有可能造成其他问题。参考:
http://blog.sina.com.cn/s/blog_5773dd910100bb6y.html
我们直接从用户机system32文件夹下拷贝dwmapi.dll到开发机来模拟问题出现。测试结果是,如果dwmapi.dll文件存在则会弹出“无法定位程序输入点_except_handler4_common 于动态链接库 msvcrt.dll”,不存在则不会有错误提示。现在可以肯定的是msvcrt.dll没有问题。通过msdn查阅dwmapi.dll这个文件最低操作系统为vista,正常来说XP系统中不应该存在。然而有可能因为某些界面库,改造系统或者某些常用软件的原因把这个文件带入到了XPsp3的机器上,可悲的是出现这种问题的机器还不是少数。(开发环境和用户环境都是XPsp3)我们现在想要做的是尽量不更改dwmapi.dll这个文件名来解决由它所造成的错误提示问题。