我为EXcel做的Addin型的*.DLL 文件,ABC.dll 文件,没有使用ADO控件调用微软access数据库,在其他电脑中
可以成功执行 regsvr32  XXX.dll 命令.
CDE.dll 文件,在ABC.DLL的基础上,增加了一些功能,使用ADO控件调用微软access数据库,增加了F1book控件的使用等,当我在其他电脑中执行"  regsvr32  XXX.dll文件时,提示如下:
"loadlibrary没有XXX.DLL失败,找不到指定的模块",不知道是什么原因,
我怀疑是在其他电脑中执行"  regsvr32  XXX.dll文件时,没有将有关的支持库文件装入.
在我开发CDE.dll的电脑中,装有Delphi6,打开项目的project options,
packages ,runtime packages 中的内容如下:
"vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;qrpt;teeui;teedb;tee;dss;teeqr;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;webdsnap;websnap;soaprtl;dbexpress;dbxcds;indy;dclOffice2k "1.如果  把 " build with runtime packages "选中,
则编译的文件为5562KB,    A:此时把'delphi6\bin\'下的文件"dcloffice2k60.bpl"改为其他名称,
    在装有delphi6的电脑中执行regsvr32  CDE.dll文件时,提示如下:
    "loadlibrary没有XXX.DLL失败,找不到指定的模块".    B:此时如果把把'delphi6\bin\'下的文件"dcloffice2k60.bpl"名称不更改,,
   在装有delphi6的电脑中执行regsvr32  CDE.dll文件时,可以成功执行.2.如果  把 " build with runtime packages "未选中,
   则编译的文件为11660KB, 在装有delphi6的电脑中,无论是否把"dcloffice2k60.bpl"名称改变,执行regsvr32  CDE.dll文件时,都可以成功.请问 regsvr32 命令执行了那些语句,这个命令里是否使用了loadlibraray语句?有的文章说loadlibraray与  loadlibrarayEX不同,我只有10分了,不能给更多的分  

解决方案 »

  1.   

    是这样的," build with runtime packages "是一个开关,如果不选择,那么DELPHI将做完全编译,将与项目相关的库、包封装到编译后的文件中,因此你的目标文件达到11M左右。当你选择之后,编译后的目标文件减少到5M左右,但是它将需要runtime packages 支持,这些包也就是"vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;qrpt;teeui;teedb;tee;dss;teeqr;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;webdsnap;websnap;soaprtl;dbexpress;dbxcds;indy;dclOffice2k ",你要自己寻找那些包被你使用了,然后复制这些包到目标计算机。当然,最简单的方式是做一个安装盘。
      

  2.   

    用DEPANDS工具,到不能注册的机器看,还缺少什么控件,然后拷贝过去就能解决了.这个depands在网络上可以下载,找一下.