我能够成功注册一个COM-DLL(用VB6编写)dowFct.dll

regsvr32 dowFct.dll


但是当我尝试用

regsvr32 dowFct.dll /i


我收到错误消息(从德语翻译成英语):

已加载模块dowfct.dll,但未找到DllInstall入口点。

我问我,是否将regsvr32与/ i一起使用并且没有任何其他参数是否不同?
在这种情况下,有人可以帮助我吗? - 谢谢。

最佳答案

如果没有/i选项,regsvr32将加载DLL并调用导出的函数DllRegisterServer
使用/i选项,regsvr32加载DLL并调用导出的函数DllInstall


显然,您的DLL不会导出DllInstall,因此它似乎希望通过调用DllRegisterServer进行注册。因此,在调用regsvr32时忽略/i选项。

DllInstall的文档解释了这两个功能之间的区别:


DllInstall仅用于应用程序安装和设置。它
不应由应用程序调用。目的类似于
DllRegisterServer或DllUnregisterServer。与这些功能不同,
DllInstall接受一个输入字符串,该字符串可用于指定一个
各种不同的动作。这允许将DLL安装在
根据任何合适的标准,采取多种方式。

要将DllInstall与regsvr32一起使用,请添加“ / i”标志,后跟冒号
(:)和一个字符串。该字符串将作为
pszCmdLine参数。如果省略冒号和字符串,则pszCmdLine
将设置为NULL。以下示例将用于安装
DLL。

regsvr32 /i:“Install_1”dllname.dll

在bInstall设置为TRUE且pszCmdLine设置为的情况下调用DllInstall
“安装_1”。要卸载DLL,请使用以下命令:

regsvr32 / u /i:“Install_1”dllname.dll

在以上两个示例中,DllRegisterServer或
DllUnregisterServer也将被调用。要仅调用DllInstall,请添加
“ / n”标志。

regsvr32 / n /i:“Install_1”dllname.dll

关于winapi -/i和不带参数的regsvr32之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26098911/

10-12 22:35