我可以用
成功注册一个COM-DLL(用VB6编写)dowFct.dll
regsvr32 dowFct.dll
但是当我尝试用
做的时候regsvr32 dowFct.dll /i
我收到错误(从德语翻译成英语):
模块dowfct.dll已加载,但未找到DllInstall入口点。
我问我,如果将regsvr32与/ i一起使用并且没有任何其他参数是不一样的? 在这种情况下,有人可以帮我解决问题吗? - 谢谢。
答案 0 :(得分:5)
/i
选项,regsvr32将加载DLL并调用导出的函数DllRegisterServer
。/i
选项,regsvr32加载DLL并调用导出的函数DllInstall
。显然,您的DLL不会导出DllInstall
,因此它似乎可能会通过调用DllRegisterServer
进行注册。因此,在调用regsvr32时省略/i
选项。
DllInstall
的文档解释了这两个函数之间的区别:
DllInstall仅用于应用程序安装和设置。它 不应该由应用程序调用。它的目的是相似的 DllRegisterServer或DllUnregisterServer。与这些功能不同, DllInstall接受一个输入字符串,可用于指定a 各种不同的行动。这允许安装DLL 不止一种方式,基于任何适当的标准。
要在regsvr32中使用DllInstall,请添加" / i"标志后面跟冒号 (:)和一个字符串。该字符串将作为传递给DllInstall pszCmdLine参数。如果省略冒号和字符串,请输入pszCmdLine 将被设置为NULL。以下示例将用于安装 DLL。
regsvr32 /i:"Install_1" dllname.dll调用DllInstall时将bInstall设置为TRUE并将pszCmdLine设置为 " Install_1&#34 ;.要卸载DLL,请使用以下命令:
regsvr32 /u /i:"Install_1" dllname.dll使用上述两个示例,DllRegisterServer或 DllUnregisterServer也将被调用。要仅调用DllInstall,请添加 a" / n"标志。
regsvr32 /n /i:"Install_1" dllname.dll
答案 1 :(得分:1)
VB6 COM DLL不会导出DLLInstall()
,这是一个函数,可以作为DLL对自身执行设置操作的方式(也是/i
尝试执行的操作)所以你不需要需要担心它。
只需使用regsvr32 dowFct.dll
(调用VB编译器为您添加到库中的DllRegisterServer()
。)
答案 2 :(得分:0)
您是否尝试过regsvr32 /?
?
它告诉我有一些注意参数被发送到dll文件的DllInstall方法。
/ i:cmdline:调用DllInstall传递一个可选的[cmdline]。当与/ u一起使用时,它会调用dll uninstall。
[source]