软件在某些机器上出现该提示,具体原因是软件启动过程中调用dwmapi.dll最终指向msvcrt.dll的_except_handler4_common函数,由于dll版本不匹配出现该提示(估计是非正版XPsp3系统使用了vista的dwmapi.dll,但是出现类似问题的机器很多)
网上搜索答案是把dwmapi.dll换个名字就可以,这样确实可以解决问题,但是希望从软件内部来解决问题而不是更改用户机的文件名,求更好的解决办法。

解决方案 »

  1.   


    理论可行,试验无效。即使可以这样用也面临2个问题:
    1、软件包体积增大。
    2、vista下的msvcrt.dll在xp下有可能造成其他问题。参考:
    http://blog.sina.com.cn/s/blog_5773dd910100bb6y.html
      

  2.   

    应该带上你编译软件的编译器对应版本的msvcrt.dll到目标机器..同时带上manifest等指定好版本
      

  3.   


    我们直接从用户机system32文件夹下拷贝dwmapi.dll到开发机来模拟问题出现。测试结果是,如果dwmapi.dll文件存在则会弹出“无法定位程序输入点_except_handler4_common 于动态链接库 msvcrt.dll”,不存在则不会有错误提示。现在可以肯定的是msvcrt.dll没有问题。通过msdn查阅dwmapi.dll这个文件最低操作系统为vista,正常来说XP系统中不应该存在。然而有可能因为某些界面库,改造系统或者某些常用软件的原因把这个文件带入到了XPsp3的机器上,可悲的是出现这种问题的机器还不是少数。(开发环境和用户环境都是XPsp3)我们现在想要做的是尽量不更改dwmapi.dll这个文件名来解决由它所造成的错误提示问题。
      

  4.   

    应该是你有的dll里掉用了旧版的msvcrt.dll而调用该dll的exe程序用的又是不同版本的msvcrt.dll,于是就导致了这种情况所以要统一两个版本
      

  5.   

    msvcrt.dll没有问题,开发机测试过了