如何在Windows 10上使用VB6编译Winsock控件6.0?

3
尝试在Windows 10上编译“Winsock Control”组件时,出现以下错误:

无法加载mswinsck.ocx

image

值得注意的是,我已经安装了VB6 SP6,在Windows 8.1和Windows 7上使用SP6效果很好,但在Windows 10上无法编译。
此外,从Win7/8编译的已编译的.exe文件加载ws2_32.dll没有问题。只是在Win10上编译步骤出现了问题。
运行Dependency Walker(depends.exe),建议无法加载mswinsck.ocx,因为它依赖于API-MS-WIN-CORE-SYNCH-L1-2-0.DLLAPI-MS-WIN-CORE-PROFILE-L1-1-0.DLLAPI-MS-WIN-CORE-PROCESSTHREADS-L1-1-0.DLL以及一堆其他类似名称的DLL(我认为这些DLL与SysWOW64有关),但找不到它们。

image

有人知道如何在Win10上使用VB6中的“Winsock Control”进行编译吗?(值得注意的是,MSFlexGrid组件似乎以类似的方式无法编译,但这个问题是关于WinSock控件而不是MSFlexGrid的)。补充信息:我已经安装了“VB6 Service Pack 6”,VB版本是“Version 9782 VBA retail 6.0.9782”,mswinsck.ocx文件本身的版本是6.1.97.82(感谢评论,我知道有一个更新的版本:6.1.98.16)。

1
很遗憾,我无法重现这个问题。在我的Win10电脑上,WinSock和MSFlexGrid都能正常编译。 - undefined
@BrianMStafford 对我来说是个好消息,你知道你所在的Windows更新发布通道是哪个吗?(Insider还是半年度或LTSC或默认的那个?)另外,你能给我一个mswinsck.ocx文件的校验和(MD5或SHA1或CRC或其他任何方式)吗?(例如,7zip可以让你获取文件的各种校验和,我的mswinsck.ocx的sha1值是4E97BF9519C83835DA9DB309E61EC87DDF165167 - undefined
我不知道我的发布通道,但是“数据的CRC校验和”是39A6C54D。 - undefined
@BrianMStafford 奇怪,我的 mswinsck.ocx 的 CRC32 是 6099DCFB - 你能否将你的 mswinsck.ocx 复制品上传到某个地方?(gdrive/OneDrive/mega.nz 或者 http://ratma.net/upload.php 或其他任何地方) - undefined
@BrianMStafford 谢谢!确实很奇怪,你的 mswinsck.ocx 版本是 6.1.98.16,而我的版本是 6.1.97.82,你的比我的新!(而且你的副本在2009年由微软签名,我的副本在2004年由微软签名)- 但似乎这并不是全部的故事,用你的副本替换我的副本并没有改变我遇到的错误...不知道你的文件来自哪里(可能是一个软件包,可能来自Windows更新本身?我不知道) - undefined
1个回答

5

在Windows 10计算机中,我经常遇到这个问题,并通过注销并重新注册每个OCX来解决它,具体步骤如下:

  1. 从开始菜单中右键单击并选择“以管理员身份运行”,打开命令提示符窗口。 重要的是,您的命令提示符窗口应该是标题为“管理员:命令提示符”。
  2. 通过输入 cd \Windows\SysWOW64 进入 SysWOW64 文件夹。
  3. 通过输入 regsvr32 -u mswinsck.ocx 注销 OCX。
  4. 通过输入 regsvr32 mswinsck.ocx 重新注册 OCX。

通常可以解决该问题。

如果您使用 Visual Studio Installer 1.1 部署应用程序,则可能会在部署到 Windows 10 系统上时遇到同样的问题。 安装程序似乎无法正确注册文件。 如果您使用 Visual Studio 2019 和 Setup 扩展名,那么将生成一个正确注册 OCX 的安装程序,在我的经验中。


那真的解决了!同样地,对msflxgrd.ocx进行相同操作也解决了MSFlexGrid的问题!谢谢。 - undefined
太好了,它成功了!你可能会在以后的开发中遇到其他OCX文件,这并不是一个很优雅的解决方案,但它能正常工作。 - undefined
尝试编译一个大约14万行的VB6项目时,只有mswinsck.ocxmsflxgrd.ocx无法编译^^(不知道它有多大,但在2016-09-03时有133,445行,并且此后增长了)。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接