解决方案 »

  1.   

    包含了idl自动生成的h,c文件没
      

  2.   

    com 要为外部使用枚举类型不是那么简单,atl已经简化了一部分
    你可以看看下面的帮助
    http://msdn.microsoft.com/zh-cn/library/x416d0xc.aspx
      

  3.   

    没看懂你在说啥!
    com里枚举定义和客户端有啥关系?
    识别不识别是你控件和客户接口定义
    还是我没看懂说的
      

  4.   

    不好意思,是我没有描述清楚。
    我是用vc++写的com,然后用C#调用,客户端就是指的调用com的C#程序。
    com里面定义的接口和CoClass在C#端都能识别(显示为已定义的类型)。但定义的枚举却死活是未定义类型,
    求好心人援助啊?
      

  5.   


    不好意思,是我没有描述清楚。
    我是用vc++写的com,然后用C#调用,客户端就是指的调用com的C#程序。
    com里面定义的接口和CoClass在C#端都能识别(显示为已定义的类型)。但定义的枚举却死活是未定义类型,
    求好心人援助啊? 
      

  6.   

    问题仍未解决。我直接拷贝别人的过来,放到idl的相同位置,还是不行。还问了他,还有没有其它地方要设置,他回答说没有。那我这里为什么不行啊help
      

  7.   

    typedef enum tagFontAlign
    {
    [helpstring("Left")]Left=0,
    [helpstring("Center")]Center=1,
    [helpstring("Right")]Right=2,
    }FontAlign;
    这样写,还是不行
      

  8.   

    终于解决了。枚举定义没有问题,但要C#端可以识别,必须要在某个接口函数中当作参数,至少用一次。当作属性没试过,估计也是可以的。
    猜想原因是,编译idl文件的时候,如果接口里面没有用到,则不会编译到DLL里面去。菜鸟的水平有限,如果有高人看见帖子,期待更专业的解答。
    可以结贴了。