当我尝试使用COM对象时,我的工作站上出现以下错误。
未处理的类型异常 'System.Runtime.InteropServices.COMException' 发生在CarteGraphInterface.exe
其他信息:检索 用于组件的COM类工厂 CLSID {3963F0F8-6B0C-4A65-90F4-F60168044014} 由于以下错误而失败: 80040154
我在这里阅读了a few questions,其中没有人帮助过。该ID未在注册表中的任何位置列出。是否需要添加?
更新:更多信息。当我在VS2008中选择“添加引用...”时,会在那里列出对象(这是我最初找到它的方式),并且源被列为* .exe。 regsrv32不起作用。
答案 0 :(得分:2)
可能需要使用
注册COM DLLregsvr32.exe /i dllname
首先尝试一下,看看是否有所作为。
编辑:不知道你是否使用它,但COM Explorer也可以帮助你。如果它可以帮助您解决此问题,请尝试使用the trial版本。
编辑:我一直在努力找到有关错误代码的更多信息,我能找到的最好的是this,它澄清了它必须是未注册的DLL。答案 1 :(得分:0)
您是如何添加对项目的引用的?使用COM时,您几乎总是应该在“COM”选项卡中添加引用(而不是“浏览”),这可以确保您获得对已注册对象的有效引用,从而创建新的互操作程序集。但是,如果您有注册问题,则很可能在COM选项卡上找不到所需的引用。
首先,COM组件存在于可执行文件中是非常奇怪的(虽然它是可能的)。也许这个组件不应该从另一个应用程序实例化,所以所有注册数据都被删除了?我建议联系任何有这个组件的人,并要求提供可注册的dll版本。
答案 2 :(得分:0)
这些解决方案都没有奏效。我假设它们实际上没有可以与.NET一起使用的API(如果有的话)。