我有一个32位的VB6自定义动态链接库,我一直在使用它直到Excel2013,Win-7。现在,在Win-10上迁移到Excel 2016后,Excel文件变得不可用。我已经通过PowerShell (管理模式)在Win-10上注册了那个旧的DLL文件,它显示注册成功。但是,当Excel中的模块通过CreateObject执行创建对象时,它显示ActiveX无法创建对象。另一个令人惊讶的是,当我试图从(在VB6中) Tools -> Reference中引用Excel时,我可以引用它,我可以访问类/函数,但当我试图执行它时,它仍然显示关于ActiveX的相同错误。
我还需要在Windows-10中做些什么才能让它运行?
发布于 2020-02-24 16:51:18
32位程序只能加载32位dlls。64位程序只能加载64位dlls。这事很重要。在VB6和Excel所做的COM中,您可以通过将错误的位动态链接库强制到dllhost中来实现不兼容位。所有调用都使用EXE服务器进行编组。请参见https://docs.microsoft.com/en-us/windows/win32/com/registering-the-dll-server-for-surrogate-activation (请注意,goggle的破坏搜索)。
https://stackoverflow.com/questions/60362649
复制相似问题