安装软件时报告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)"字样。
此问题由李海回答。
| |
|
|
| |
|
|