我做了个系统是基于动态加载bpl(每个功能模块都在bpl中).
包括以下几个部分:
1:主程序(exe文件).  载入公共数据模块,调用各个功能模块
2:公共数据模块(bpl文件).   提供统一的数据库连接,公共数据(如用户登陆信息)
3:各个实现具体功能的子模块(bpl文件)程序运行的时候,主程序首先加载公共数据模块,点击菜单加载子模块,每个子模块加载的时候都从公共数据模块获取数据库连接,用户登陆信息.我将一些公共函数写在一个单独的单元文件中,各个子模块都引用了这些单元文件.现在出现这样一个问题:  加载第一个子模块的时候一切正常,加载第二个子模块的时候出错,错误提示为"已经在XX子模块(*.bpl)中加载了XX单元文件,现在不能再加载".此时第二个子模块加载失败. 请问应该怎样分配这些单元文件的位置,编译的时候应该怎么设置?我目前是主程序带包编译公共数据模块,子模块Requires公共数据模块的Dcp文件.公共函数所在单元文件显示引用在主程序中(子模块编译的时候会提示这个单元文件被隐式载入)

解决方案 »

  1.   

    一个BPL加载一次就行了,单独在主程序中加载通用bpl。
      

  2.   

    问题是我现在有两个通用bpl,而且有一个代理单元(记录各个消息常量,常量字符串,定义各个指针变量等等)这个代理单元引用了这两个通用bpl的单元文件,现在将这个代理单元文件编译在主程序中
      

  3.   

    把代理单元也编译成BPL,用主程序读。
       mainmodule:= LoadPackage(bplname);
      

  4.   

    前些日子也在看这方面,用bpl要注意事项太多,现在改用dll
      

  5.   

    我也感到奇怪,楼主为什么要用 bpl 而不用 dll 呢?