我见过一些用Delphi开发的软件,只要里面用到了许多Dll就出现地址错误??这是Delphi 的问题吗?

解决方案 »

  1.   

    编码人员的事.怎么能怪到DELPHI身上.
      

  2.   

    用Delphi写dll的时候不要用Delphi专有的数据类型
      

  3.   

    应该说在一定程序上存在这样的问题,主要原因是:
    开发者在dll中封装了VCL窗体和组件.由于dll和主控程序均有一个application对象和Screen对象,会导致一些内存访问、焦点处理等问题,这些问题解决起来非常棘手。
      

  4.   

    虽然在dll中,可用主控程序的application和Screen对象取代dll中的相应对象,可解决部分问题,但仍然无法从根本上解决问题。Canto(《delphi从入门到精通》的作者)的建议是用bpl代替dll。
      

  5.   

    我写了个Dll,为了看Delphi写的DLL是否稳定,我是循环来测试,连续执行1000次,结果不到50次就会报错,然后我在调用Dll的单元中加上 ShareMem 单元,结果非常稳定,但是我关闭程序的时候就会报错!!!不知道为什么?后来我新建一个应用程序,在一个空白的窗体单元加上 ShareMem 单元,
    然后我啥也不干,运行程序,结果退出时报错!!!服了,难道 ShareMem 单元不能用?
      

  6.   

    sharemem 是可以用的, 在退出 dll 时, dll 会主动去释放 Application 对像, 因此退出前 Application.Handle 要设为空
    delphi 的 vcl 窗体放在 vcl 中是有点怪怪的问题, 主要原因就是各种函数dll中也有一份, 用 bpl 代替 dll 是一个好方法,但静态连入的 bpl 还是跟 dll 有同样的问题, 小心在 dll 中也用到的 bpl 必须是动态 link, 像 borland 自带的那些呵, 程序看上去大了不少, 不是很大的项目我看还是不用
      

  7.   

    我现在建一个空的应用程序,然后加上ShareMem单元就报错,怎么办?
      

  8.   

    DLLEntryPoint(DLL_PROCESS_ATTACH);为什么在 Dll 的
    begin
    end;中加上上面的那句通不过呀!!!
    我看到好多例子都说通过,但我就是不行!我用的 D7!!!