本文发表在 rolia.net 枫下论坛 问题:本人用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,也用不着注册。你所遇到的问题是VB 6的一个Bug(在VB 6 SP3中已经修复)。如果你的VB6dep.ini文件的ExpSrv.dll多了Register一行,应该删除。或者打开安装程序的Setup.lst,删除其中ExpSrv.dll一行中的“$(DLLSelfRegister)”字样。更多精彩文章及讨论,请光临枫下论坛 rolia.net
错误: 在′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,也用不着注册。你所遇到的问题是VB 6的一个Bug(在VB 6 SP3中已经修复)。如果你的VB6dep.ini文件的ExpSrv.dll多了Register一行,应该删除。或者打开安装程序的Setup.lst,删除其中ExpSrv.dll一行中的“$(DLLSelfRegister)”字样。更多精彩文章及讨论,请光临枫下论坛 rolia.net