1

假设我有以下定义:

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 无法导入类型库。我应该如何正确地生成 tlbs(用 regasm 检查)并且需要以某种方式定义 A2.tlb 取决于 tlb1 ?我在这里看到了相关的帖子,我知道打开 oleview 可以在本地解决问题,但我需要更通用的解决方案(这将在构建服务器上工作)提前致谢

4

0 回答 0