【问题标题】:regsvr32 error: the module was loaded but the entry point was not foundregsvr32 错误:模块已加载但未找到入口点
【发布时间】:2020-05-01 14:11:03
【问题描述】:

这里的人使用的是一个旧的编译VB程序,最后一个版本是16岁。它适用于某些机器,但不适用于其他机器,都具有相同的 1709 版本和 Windows 10 的更新。

如果它不起作用,则会显示一条消息,指出 msdatlst.ocxmsdatgrd.ocx 未注册。然后,当我尝试向regsvr32 'MSDATGRD.OCX' 注册时,会出现一条消息"the module was loaded but the entry-point was not found"。同样的命令在程序运行的机器上也是成功的。

我确实在这里阅读了一些问题,但没有一个答案能解决我的问题。有什么想法吗?

【问题讨论】:

  • 以管理员身份运行 cmd.exe 并尝试 regsvr32 "path_to_msdatgrd.ocx"。
  • 另外,尝试注册任何其他 ocx 或 COM/ActiveX dll 文件。如果问题仍然存在,请尝试 Process Monitor 对其进行故障排除stackoverflow.com/questions/59463345/… 如果没有任何帮助,请尝试为您的 ocx 文件使用小型设置应用程序。您可以使用 Visual Studio 或一些设置工具(如 Setup Factory)来实现。
  • VB6 是 32 位的,因此您必须在 C:\Windows\SysWOW64 中使用 32 位 regsrv32,并且如前所述以管理员身份运行。
  • @Smith:是的,我是以管理员身份完成的
  • @Mark 我一开始也是这么想的,但后来我读到了另一个问答:stackoverflow.com/questions/18935163/… 现在我不确定了。

标签: windows dll vb6 ocx regsvr32


【解决方案1】:

感谢@Mark 的评论和所有其他人。问题确实是regsvr32执行了哪个版本。

在可以注册ocx 的机器上,默认版本是\windows\syswow64,而那些无法注册的机器是\windows\system32。然后我确实运行了syswow64,注册成功,程序现在可以运行了。

【讨论】:

    【解决方案2】:

    检查是否指定了.def文件,否则无法导出所需的DllRegisterServer函数。

    【讨论】:

      猜你喜欢
      • 2012-04-30
      • 1970-01-01
      • 2012-12-17
      • 2013-11-17
      • 2012-10-18
      • 2013-08-09
      • 2015-10-14
      • 1970-01-01
      • 2016-03-24
      相关资源
      最近更新 更多