我用C++做了一个COM组件(dll),想在C#中使用这个组件,我已经把组件的tlb文件添加到Reference里了,求使用代码片断

LeEventLib a = new LeEventLib();
a.methods1();
我没有用过C#,谢谢

解决方案 »

  1.   

    1,不是在引用中添加tlb文件,而是直接添加Dll文件
    2,比如kernel32.dll中的FormatMessage方法,这样申明一下,就可以调用了
    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
            private unsafe static extern int FormatMessage(int dwFlags,
                ref IntPtr lpSource,
                int dwMessageId,
                int dwLanguageId,
                ref String lpBuffer,
                int nSize,
                IntPtr* Arguments);
      

  2.   

    cbo5(),谢谢,我已经用出来了,我还想问一个问题,我用C++做的COM组件,在C#工程中引入后我定义的那些常量都找不见了,但是接口函数和结构体能识别出来,是不是C#不支持常量定义阿?
    谢谢!!
      

  3.   

    To楼上:
    楼主是在COM调用,不是PInvoke。To楼主:
    既然你把tlb加到Reference中了,那么你可以在C#中看到类似:
    Interop.XXX
    的namespace,里面就是你的C++实现。
    下面是一个C#使用片断:using Interop.XXX;...
    LeEventLib a = new LeEventLib();
    a.methods1();
    ...
      

  4.   

    还是用tlb要方便多了。C#是支持常量定义的!