Com 如果在VB6项目中使用类型库(.tlb),是否需要将其与.exe一起分发?

Com 如果在VB6项目中使用类型库(.tlb),是否需要将其与.exe一起分发?,com,vb6,typelib,Com,Vb6,Typelib,如果我在VB6项目中使用类型库,我是否需要在目标计算机上使用已编译的exe分发.tlb文件(甚至可能注册它?)。它仅在编译时使用。仅当您使用多线程时,即ActiveX EXE或带有CoMarshalInterThreadInterfaceInStream等函数的in-proc。否,通常仅当您实际调用试图使用类型库中类型的代码时才需要它。我发现了一些例外,包括使用类型库中的类型来标注变量。我想是这样的 假设类型库定义了一个结构a,并且您的应用程序包含这样一个过程。如果未注册类型库,则应用程序无法启

如果我在VB6项目中使用类型库,我是否需要在目标计算机上使用已编译的exe分发.tlb文件(甚至可能注册它?)。它仅在编译时使用。

仅当您使用多线程时,即ActiveX EXE或带有
CoMarshalInterThreadInterfaceInStream
等函数的in-proc。

否,通常仅当您实际调用试图使用类型库中类型的代码时才需要它。我发现了一些例外,包括使用类型库中的类型来标注变量。我想是这样的

假设类型库定义了一个结构a,并且您的应用程序包含这样一个过程。如果未注册类型库,则应用程序无法启动-将显示错误消息

Sub testSub1(ByRef mybadarray() As A)
但这没关系

Sub testSub2()
  Dim ok As A ' OK provided you never actually Call testSub2 at runtime '

根据我的经验,我总是将.TLB文件与.EXE一起分发(包括注册),这有助于我防止出现多个运行时错误,如“运行时错误'429”:ActiveX组件无法创建对象。”

我不清楚“代码使用类型”是什么。因此,如果我将一个变量设置为类型,或者将该变量设置为一个值,那么是否考虑“使用”该类型?在这种情况下,我需要分发.tlb吗?如果我能对上述问题作出澄清,我可以接受你的回答。谢谢!