通过使用 COM Interop 实用工具 (TlbImp.exe) 导入相关的 COM 类型成功地把VB6.0中最常用的串口控件引入到了C#工程中,编写串口程序方便了许多.
    这次编写实时数据库系统PHD接口时,以同样的方法把 PHData.tlb 亦成功导入.
    在new 一个具体的类实例时报错:(0x80040154) COM object with CLSIS XXXX IS either not valid or not registered.
    显然是说COM组件没注册好,可是问题是 
        PHData已经注册成功(regsvr32) -- 由系统厂商提供的安装包完成.
        从PHData导出的四个类,new 第一个时候并没有报错,测试代码连接服务器成功
                             new 其他三个皆报错
-----------------------------------------------
    PHData.tlb导出类型列表:
              CPHDataClass
              CTagsClass
              CTagClass
              IPHDTagDefinitionClass
-----------------------------------------------           
    应用代码:
    PHData.CPHDataClass m_PHData = new PHData.CPHDataClass();
    m_PHData.HostName = "localhost";
    m_PHData.Login("UserName","Password");
                            //####################
                            以下代码运行时出错
    PHData.CTagsClass tags = new PHData.CTagsClass();
    PHData.CTagClass tag = new PHData.CTagClass();
     ...  ...      
------------------------------------------------
第一个类CPHDataClass对应的COM (PHData.tlb)已经注册
其他的类也是从PHData.tlb导出的:
         系统竟然没有注册?  如何注册?
         还是TlbImp工具有问题? 还是需要什么特殊参数?
         CPHDataClass的一个属性的类型是CTagsClass.而tlbimp将其改为Object类型.是否有关?恳请对COM原理和.NET COM Interop 熟悉的大侠指点迷津.