我在用dellphi的时候,大多编译出来是一个EXE,但很多程序却是由EXE和很多DLL构成,请教(俺是菜鸟,请不要笑话我):
1.delphi写成的程序中,DLL里面都是装的大多是功能模块吗(只有功能还是带有Form一起)?哪种情况下,将什么内容写在DLL要好些?
2.我做了一个网络MDI窗体(多窗体)程序,是不是将MDI窗体封闭成DLL要好些?说简单点,就是我不太明白哪种情况需要写成DLL的模式,而不是一个EXE。

解决方案 »

  1.   

    不知你对windows的DLL了解不,它们是一样的
    1 你一定使用过API函数,它们大多封装在DLL文件中,它与我们平常用的函数,过程,类的编写方法都是一样的,就你经常重复使用的功能编写在DLL中,下次就不用编写了,直接用就可以了.提高效率吗
    2 可一封装MDI窗体,但尽量不要这么做,会有很多麻烦,
      

  2.   

    谢谢1楼,我对DLL还是比较了解的,但有一个疑问主是,我经常用函数、类都是新增一个Unit来写,需要重复使用的时候,把Unit复制过去就行了,一样的直接调用,所以我不太明白,把函数和类封装到DLL中去的好处是什么?
      

  3.   

    这个就是共享问题,对于DLL来说其它开发环境也可调用,比如C++等,但你的UNIT只能在你的DELPHI里引用,其它就无法调用了,若在一个大的软件开发团体里为了方便其它人的调用当然是要把一些常用功能编写为DLL文件,这样人人都可调用了,不会因为你的环境不同就不能调用!
      

  4.   

    dll是为了节省内存.
    比如一个功能,在10个软件都有相同的,做成dll的话,那么实际上功能的代码只有一份.就算10个软件同时运行
    要不是dll的话,那个代码就有10份.假如10个软件同时运行的话,就占了10份的空间.
      

  5.   

    谢谢3楼的解答,小弟是毛塞顿开,原来DLL是为了解决共享调用问题的,明白了,换句话说,就是DLL是将功能封装起来,方便调用的。
      

  6.   

    回4楼:
    在Unit里写成类的话,好像也不会是10份代码哦,应该也是1份代码哦,我感觉不应该是10份代码累加。
      

  7.   

    你这样算,在10个程序里面都用这个unit的话,那编译之后的代码是不是在10个程序里面都存在?
    如果将这部分代码写到dll里面,是不是能减少运行时候的大小?
      

  8.   

    恩,谢谢提醒,我明白了,就是通常用的功能还是写在dll中比较好。
      

  9.   

    DLL只存在于主程序的地址空间中,他不会单独地占用地址空间,俩个进程访问的时候,会通过操作系统映射到这俩个进程的地址空间,
      

  10.   

    就是一动态连接库.
    方便多个程序调用共用的函数库.
    随着程序的增大,你会发现有一些公用的东西必须单独放到 DLL中,节省体积,也合理化了调用.