找不到 DllRegisterServer 入口点
Posted
技术标签:
【中文标题】找不到 DllRegisterServer 入口点【英文标题】:DllRegisterServer entry point was not found 【发布时间】:2009-11-09 20:26:22 【问题描述】:在运行我的 vb6 应用程序时,我遇到了类似的错误,
运行时错误“53”:找不到文件:rscomclNoMsg.dll
然后我尝试使用 regsvr32 从 cmd 行注册该 dll。然后我收到类似
的错误我将 rscomclNoMsg.dl 复制到 c:\windows\system32 和 C:\Program Files\Microsoft Visual Studio\VB98
谁能为我提供解决方案?
【问题讨论】:
【参考方案1】:Dependency Walker 可能会成为你的朋友。您可以在 rscomclNoMsg.dll 上运行它,以了解它是什么类型的 DLL,以及它具有哪些依赖项。
【讨论】:
【参考方案2】:“未找到 DllRegisterServer 入口点”表示它不是 COM DLL。
" runtime error '53': file not found: rscomclNoMsg.dll" 表示 VB6 在它的任何搜索路径中都没有找到 DLL。它应该放在 System32 或应用程序目录中。由于您已经尝试过 System32,我会尝试将其移至应用程序所在的任何位置。如果您从 IDE 运行它,那么它必须是具有 DECLARE 语句的 EXE 或 DLL。
对于 Win32 DLL,您需要有关可用函数的文档,然后使用 DECLARE 使它们可见。作为声明语句的一部分,您告诉它要使用什么 DLL。这个MSDN article 解释了发生了什么。
用 .NET 编写的 DLL 必须通过 COM 公开,以便它们对 VB6 可见。
如果您有良好的源代码,您可以查看各种项目并找出 rscomclNoMsg 的声明位置。希望这会告诉您放置 dll 的位置。
更多细节将有助于完善我的答案。
【讨论】:
【参考方案3】:什么是rccomclNoMsg.dll?它是 COM DLL 还是 .NET DLL?如果 DLL 是用 .NET 编写的,您(或编写 DLL 的人)将不得不采取一些步骤使其 COM 可见。
这可能会对您有所帮助:Steps to make your .Net DLL useable from VB6
【讨论】:
如何找到特定的dll是com dll还是.net dll?我从来没有工作过vb6。谢谢 您的意思是DLL 从未在VB6 中工作过,还是您自己从未在VB6 中编写过任何东西?除了尝试将 DLL 导入 VB6 之外,VB6 中只能使用 COM 可见 DLL。以上是关于找不到 DllRegisterServer 入口点的主要内容,如果未能解决你的问题,请参考以下文章
解决方案windows win7 双击图片,不能通过照片查看器打开,有错误 “模块shimgvw.dll已加载,但找不到入口点DllRegisterServer ”