之前我在别人的基础上进行二次开发,用到了一个第三方的动态库,叫做Controls.dll是用来对VC的各个控件进行方法和界面呈现的扩展。开发完成后一段时间,现在安装别的XP机器上,程序运行不起来,进入调试状态看到如下信息:
CONTROLS.DLL Initializing!
CONTROLS.DLL Terminating!
Detected memory leaks!
Dumping objects ->
strcore.cpp(118) : {59} normal block at 0x01521740, 36 bytes long.
 Data: <            SOFT> 01 00 00 00 17 00 00 00 17 00 00 00 53 4F 46 54 
Object dump complete.
The thread 0xAA4 has exited with code 0 (0x0).
看到是因为这个库内存指向空而终止退出。
可关键是现在在有的XP机器上可以,有的不可以。这就郁闷了。
然后这第三方的,我也看不到源码,(PS之前开发也是在XP的系统下进行开发)
请各位大侠指点下迷津,有什么办法?

解决方案 »

  1.   

    基本能肯定是这个第三方DLL代码未充分测试,对上下文环境判断不足,一定条件下运行出错。无论如何,你是没办法自己解决的,还是要把问题反馈给DLL开发者,或许需要在用户机器上安装一个什么东西才行。
      

  2.   

    唉,现在就是不知道运行的起环境和运行不起的环境到底的差异是什么?比较起来好像也没什么大的差异。之前这个第三方DLL的源码到网上搜也没找到,真是郁闷了,不知道该怎么去规避了。
      

  3.   

    那是人家的调试信息吗?你要确定你使用的是否正确,为什么这样使用会导致错误。第三方库不当使用出问题很常见,联系不到源开发者,只能自己尝试,怎么样能正常的使用。我怀疑是你对DLL接口参数有不当的使用,多尝试下吧,在调用DLL前的接口进行信息打印。
      

  4.   

    需要说明的是,这个DLL我是静态加载的。程序在还没加载到App的Inistance甚至是其构造函数的时候就已经崩溃了。这是静态加载DLL时出错的。还没有到程序的App的初始化,