不能载入OCX组件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不能载入OCX组件相关的知识,希望对你有一定的参考价值。

错误信息:不能载入OCX组件“RichtextCtrl1.0版1.0版”,其组件或类型库文件名为“RichTX32OCX”,数字签名为“3B7C8860-D78F-101B-B9B5-04021C009402##0”,请确认该组件已经被安装到Windows系统中。
具体信息:OCX组件初始化错误:载入指定OCX组件或类型库失败

找到Tvantsx.ocx文件,

然后在它的文件夹里新建一个BAT文件,输入:
regsvr32 Tvantsx.ocx
保存后,双击BAT即可。

或进命令提示行输入:
regsvr32 c:\Pro……\Tvantsx.ocx(这里是文件的全路径)

regsvr32 的用法可以查看Windows帮助。
参考技术A 以管理员身份打开。我装软件的时候出现了和你一样的图。找了好久才找到这种方法。我是WIN7。

C# 中的 OCX 组件 - 使用和部署

【中文标题】C# 中的 OCX 组件 - 使用和部署【英文标题】:OCX component in C# - using and deploying 【发布时间】:2010-07-07 10:32:12 【问题描述】:

我正在创建使用 OCX 组件的 C# 应用程序。我从某种打印机的制造商那里得到了这个组件。在安装他们的文件期间,foo.ocx 被添加到我的 C:\Windows\System32 中。

我唯一要做的就是在解决方案资源管理器中添加引用,然后在 COM 选项卡中指向该库。然后我取界面:

[Guid("XXX")]
 [CoClass(typeof(FooClass))]
 public interface Foo : IFoo  

我创建了 COM 接口的实例:

 class Program
 
  static void Main(string[] args)
  
   var foo = new Foo();
  
 

一切正常。我这样做对吗?

第二件事对我来说更重要是,我不确定如何部署它。解决方案资源管理器中的引用文件具有属性:嵌入互操作类型:True,隔离:False。这将导致构建目录中只有 1 个 exe 文件。我想在其他机器上使用我的应用程序,所以我必须做一些事情,但我不确定,是什么。我试图更改该引用的属性,包括复制本地,但我怀疑我必须在其他机器上安装这个 ocx 文件。我应该使用 regsvr32 还是 regasm?我应该注册这个ocx文件还是别的什么?

【问题讨论】:

【参考方案1】:

使用 [CoClass] 属性是非常不寻常的,您通常会依赖 Tlbimp.exe 或添加 COM 引用来将类型库自动转换为互操作类。避免错误和版本控制问题。但如果它有效,那又如何。

是的,您需要将该 COM 服务器部署并安装在目标计算机上。这可以像复制 .ocx 文件并将其注册到 Regsvr32.exe 一样简单。但它很少那么简单,.ocx 文件可能依赖于其他必须复制和/或注册的 DLL。最好使用供应商的安装程序。找出原始测试机器或虚拟机需要什么。

【讨论】:

我粘贴的界面是添加COM引用后生成的。我唯一要做的就是创建对象并使用它,如Program 类所示。 哦,好的。然后只需担心如何部署它。 你觉得我的回答怎么样? 在使用 COM 时,99.9% 的情况下都需要使用 [STAThread] 属性。绝大多数 COM 服务器只支持单线程单元。不知道为什么使用无注册 COM 有效果。【参考方案2】:

Hans Passant 已经回答了我的问题,但我刚刚发现,将引用属性中的 Isolated 设置为 True 即可完成工作 - exe、exe.manifest 和原始 ocx 文件将被放入发布文件夹,但这只有在我用[STAThread] 属性标记我的Main 方法时才有效:

class Program

 [STAThread]
 static void Main(string[] args)
 
  var foo = new Foo();
 

如果不运行,exe 将导致InvalidCastException。在那之后,我真的不需要用 regsvr32 注册那个 ocx。

【讨论】:

以上是关于不能载入OCX组件的主要内容,如果未能解决你的问题,请参考以下文章

Unity3d修炼之路:载入一个预制体,然后为该对象加入组件,然后查找对象,得到组件。

vue路由自动加载、按组件异步载入vuex以及dll优化

手机上网。进网页显示这个~此处网页不能载入为net::err_name_not_resolved。

Andriod开发技巧——Fragment的懒载入

25工具类实现自动载入与类

ajax 动态载入html后不能执行其中的js解决方法