如何解决TYPE_E_ELEMENTNOTFOUND(0x8002802B)加载旧DLL的错误?

问题描述 投票:1回答:1

我试图在VS2017解决方案中使用旧的VB6制造的DLL,但其中一个上周开始失败。

我已经注册了它们(regsvr32),在解决方案中添加了引用,并尝试使用其中的方法。

当我在星期五关闭我的VS2017午休时,一切都很顺利,当我尝试恢复我的工作时,其中一个DLL开始行为不端。

提到的DLL会抛出一个TYPE_E_ELEMENTNOTFOUND错误,就像它甚至不存在一样,显然,我无法访问其类中的方法。

位置不是问题(尝试使用它从System32和SysWOW64没有运气),它仍然显示

无法确定COM引用“prjPermisos”的依赖项。找不到元素。 (来自HRESULT的异常:0x8002802B(TYPE_E_ELEMENTNOTFOUND))

警告(甚至不是错误,但IDE仍然没有让我使用DLL。)

我的代码很简单:

prjPermisos.clsCarPermisos carPermisos = new prjPermisos.clsCarPermisos();
carPermisos.CargaPermisos(ref oUsuario, ref sError);   //<--"are you missing a using directive or an assembly reference?" error

清理(​​使用IDE和手动)解决方案,重建,构建解决方案,但仍然没有。

我很肯定我在这里缺少一些东西,我只是不知道是什么。

非常感谢任何对正确方向的帮助或指导。

c# dll vb6-migration regsvr32
1个回答
0
投票

解决了。让我们感谢Murray Foxcroft的想法。

跑了并重新编译了DLL项目,取代了错误的dll,一切都恢复了。 -_-

© www.soinside.com 2019 - 2024. All rights reserved.