none
VS2010编译出的程序, XP运行正常, WIN7运行, 调用的dll返回异常. RRS feed

  • 问题

  • VS2010 MFC程序, 静态编译, 调用供应商提供的dll.

    编译生成的exe, 在XP下运行一切正常. 在WIN7下运行返回异常. VS2010 编译需要注意什么吗?

    2014年11月28日 6:52

全部回复

  • 你好:

         dll返回了什么异常呢,出现了什么错误?希望你详细描述一下你的异常。你需要去确认哪边出问题了是供应商提供的dll还是你的MFC程序。windows7是多少位的,会不会供应商的dll不支持64位,建议用一些工具例如dependenct walker之类的软件来查看一下dll的调用情况。也有可能因为系统不同,某些地方的改变导致你的MFC程序有问题。需要找出不能工作的代码段。

    Shu Hu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年11月28日 9:21
  • Shu Hu,

           你好, 详细描述如下, 请帮忙分析一下, 谢谢了.

           1. 供应商的dll,我用peid看了一下,有连接器6.0和9.0两种, 我调用的那个接口应该是6.0的.

           2. 系统是XP和WIN7 32位.

           3. dll中调用的是一个找供应商设备COM端口的函数.

           4. 我发现VC6.0在XP下编译并调用这个dll, 然后到WIN7 32位下运行, dll这个函数返回结果正常, 如返回0.

           5. 我将这个VC6.0的源码升级到用VS2008,VS2010, 然后同样编译运行, 在XP下正常, 但在WIN7 32下, 该dll的这个函数返回不正常, 是个非0值.

    2014年12月1日 5:07
  • Dear Shu,

            目前和我同事对比过, 他的VS2008程序, WIN764, 同样调用该dll函数接口, 可以正常运行. 我把我的VS2010的源码发给他, 并让他编译, 问题依旧, 降级到VS2008让他编译, 问题也依旧.  所以将问题定位在编译器设置有问题. 目前正在查找中...

    2014年12月1日 5:50