热情软件屋

 

安装软件时报告DLL中没有发现DllRegisterServer


编号:QA000892
建立日期: 1999年4月30日 最后修改日期:2000年6月14日
所属类别:

朱正福:
    本人用VB 6制作了一个程序,但在安装这软件是时系统报告:
    错误: 在 'C:WINDOWS\SYSTEM\expsrv.dll' 中未发现 DllRegisterServer() 的\WINDOWS\SYSTEM\expsrv.dll"输入点
    *** 在本操作期间: DllSelfRegister: "C:
    *** 错误: 注册文件 'C:\WINDOWS\SYSTEM\expsrv.dll' 时出错
    *** 错误: (用户响应 '忽略')
    忽略错误后安装完成。在WINDOWS 98 下安装已有同样的问题。希望得到指教。

回答:

    DLL有两种,一种是标准DLL,另一种是ActiveX DLL。前者拷贝到用户机器上就可以工作了,而后者还需要调用DLL中的DllRegisterServer或者使用RegSvr32进行注册才能使用。你可以打开VB98\Wizards\PDWizard\VB6dep.ini文件。下面是这个文件的片断:
    [ExpSrv.dll]
    Dest=$(WinSysPathSysFile)
    CABFileName=MSJet35.cab
    CABDefaultURL=http://activex.microsoft.com/controls/vb6
    CABINFFile=MSJet35.inf
    
    [MSRD2x35.dll]
    Dest=$(WinSysPathSysFile)
    Register=$(DLLSelfRegister)
    CABFileName=MSJet35.cab
    CABDefaultURL=http://activex.microsoft.com/controls/vb6
    CABINFFile=MSJet35.inf
    
    你可以看到MSRD2x35.dll比ExpSrv.dll多一行Register=$(DLLSelfRegister),这是因为MSRD2x35.dll是ActiveX DLL。ExpSrv.dll是普通的DLL,没有DllRegisterServer,也用不着注册。你所遇到的问题是VB6的一个BUG(在VB6 SP3中已经修复)。如果你VB6dep.ini文件的ExpSrv.dll多了Register一行,应该删除。或者打开安装程序的Setup.lst,删除其中ExpSrv.dll一行中的"$(DLLSelfRegister)"字样。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio