我写了一个dll,在pb里面调用,有时出现非法操作,是不是内存没有释放或者地址没有还原的问题。
我在dll的函数中加了一些messagebox,发现函数执行正常,而且窗体也应经释放掉了,在函数结束的时候出现了非法操作。是不是地址的错误,看到例子用ExitProc保存和还原地址,不知道如何用
请高手赐教

解决方案 »

  1.   

    在Delphi的帮助中就有这方面的信息,你也可以到网下找下例子,比较多。本来我收集了一些,但可异的是电脑坏了。而你的问题好像与句柄有关。
      

  2.   

    是不是在Delphi中用String?必须用PCHAR
      

  3.   

    好像是你释放的方法不对,如果你不释放Dll空间,可能就没问题
      

  4.   

    DLL中定义的函数参数类型是否与PB中调用时传入的参数类型一致?
      

  5.   

    同意nxfbccu() 
    必须用PCHAR
    原因如下:
    delphi编写的dll如果要由vc,pb等调用涉及字符串的地方必须用pchar,因为vc等中的字符串,可以看作以#0为结束符的字符数组,而delphi中的string,默认为ansistring,虽然为了和c兼容在最后加上#0,单其结构比c复杂,其中包括字符串的长度,引用次数,字符串内容等,pchar一个字符串,那么该指针正好指向string 结构中字符串内容部分(以#0结尾),因此可以看作与c一样的字符串使用。所以必须使用pchar
      

  6.   

    我返回的是pchar类型,而且已经作了异常处理,没有任何错误,
    在pb中调用时偶尔不会出错的,大部分情况下是出错的,估计是句柄的问题,
    用delphi调用的时候是不出错的,郁闷死了