我在一个动态链接库中调用了另一个一个动态链接库,结果出现了指针的错误,原来直接用的时候,是不出错的,请高手指点一下,谢了.
我的QQ:2975273。
http://www.365bar.com/mmc/prog.rar

解决方案 »

  1.   

    在uses加Sharemem,并且放在第一个,如
    uses
      Sharemem,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;调用程序和DLL都要这么做,你可以改用PCHAR,就不用加SHAREMEM了
    我测了一下,加了以后运行没有问题,可关闭时有问题,你看一下你的程序。
      

  2.   

    不是的老大,不加也没有问题的,整个调用之后出的问题,
    这是不是Dll调Dll的原因呢??
      

  3.   

    我看你的应用程序在点button时就出现无效的指针错误,加了以后就没问题了,只是关闭时有问题,你的程序到底在什么地方出问题。
      

  4.   

    dll单元的上面不是有说明吗?传送字符串必须用pchar or ShortString.改动如下:
    uses
      ShareMem,  //放在第一个.function Ping(IPAddr:String;TimeOut:Word): pchar // 返回 pchar;
       result:=pchar(....);   // 赋值我调试了一下没有问题了。
      

  5.   

    你看到for循环了吗??
    你在这里可以看到,开始是不出错的,只是在Dll调用退出之后出错,
    如果不把它写成dll,直接调用'ICMP.dll'是不出错的,这真的好奇怪
      

  6.   

    你可以搜一下我以前的一个帖子,我也是在DLL里调用DLL,结果老出错,然后我就去查了N本DELPHI书,有些没有提及这个问题,有些是说DLL调DLL可能会出问题,但没说肯定有问题,我发帖子后也没人回答。
      

  7.   

    findcsdn(findcsdn):
    老大你说的对,我原先也看到过这方面的介绍说是string类型在DLL中有时会出错,没想到今天真的发生到了我的身上,我会记住的,刻骨铭心的一次错误!!
    同时感谢大家对我的帮助!!
    谢了!
    结帐!!!