将tlb导入c ++客户端代码的问题

时间:2013-05-13 04:06:08

标签: c# com

假设我有以下定义:

namespace BaseIfsNamespace   //defined in assembly A1
{
    [ComVisible(true)]
    [Guid("2E6CB2B7-8884-4250-87A5-83BF52EE5D29")]
    public interface BaseIfs
    {
        void TestM(string s1);
    }
} 

namespace DerivedCom  //defined in assembly A2
{
    [ComVisible(true)]
    [ProgId("DerivedCom.DerivedCom")]
    [Guid("AC01FD21-4708-4296-9B2E-B268BC1D880B")]
    //[ClassInterface.None]
    public class DerivedCom : BaseIfs
    {
        public void TestM(string s1)
        {
            //Some implementation
        }

    }
}

我相应地生成类型库A1.tlb和A2.tlb。但是当我在C ++客户端代码中使用A2时

#import "c:\path11\DerivedCom.tlb" no_namespace raw_interface_only

我收到错误c1084无法导入typelibrary。 我应该如何正确生成tlbs(用regasm检查)并且需要以某种方式定义A2.tlb依赖于tlb1? 我看到相关的帖子here,我知道开放的oleview可以在本地解决问题,但我需要更常见的解决方案(这将在构建服务器上工作) 提前致谢

0 个答案:

没有答案