错误“429”AcitveX组件无法创建对象(在vb6中)

时间:2012-03-11 04:32:54

标签: vb.net vb6 activex com-interop

我在vb6中遇到一个问题。我通过向项目添加Com类在VB.net 2005中创建了一个.tlb文件。我构建了项目,在构建项目时获得了.tlb文件和.dll文件,我从项目属性中选择了“Register for Com interop”并构建。它在autometically注册,我可以在Vb6中的那台PC上使用创建的.tlb文件正常工作。如果我将应用程序部署到另一台PC并运行我得到“错误429 ActiveX组件无法创建对象”运行时错误。我需要做什么?请尽快帮助我。由于上述错误,我无法将应用程序部署到客户端。

一种可能的解决方案是在客户端PC上安装.net框架工作我永远不想安装.net框架任何其他解决方案都是最值得赞赏的。

2 个答案:

答案 0 :(得分:6)

如果您使用.NET语言(例如VB.NET)创建了DLL,则目标计算机必须安装.NET Framework才能使用DLL。

这是一个艰难而快速的要求,与您如何使用DLL无关,无论是从VB 6应用程序通过COM互操作还是其他方式。在你担心注册COM组件之类的事情之前,你必须首先跳过这个障碍,如Uday's answer所示。

如果您不想依赖.NET,则需要使用其他环境来创建ActiveX DLL; C ++或VB 6都是可能的选择。

答案 1 :(得分:-1)

一个选项可能是,在部署时,您需要在命令提示符中使用regsvr32命令在System Registry中注册该.tlb文件。通常静态库在注册到System Registry之前不起作用 您可能已经看到许多程序在安装期间注册组件,如“注册类型组件”或“注册COM组件”(特别是那些进行网络连接的人)。这些组件只是本机COM dll和tlbs。

因此,在创建部署项目时,添加一些脚本登录以使用以下命令将thode dll和tlb注册到System注册表:

regsvr32 <path to tlb/dll>

您必须递归调用此命令,以便为要向系统注册的每个dll / tlb。例如,如果你有4个dll和2个tlbs,那么你必须调用它6次,一次提供一个dll和tlb的路径。