请教一下在.NET里能调用VC写的DLL吗?如果能是和掉Windows的API函数一个方法吗?

解决方案 »

  1.   

    可以调用vc写的dll。
    使用dllimport属性来调用,就象调用api一样。
    比如:
    [DllImport("test.dll", EntryPoint="?SetXXX@@YA_NDH@Z")]
    public static extern bool SetXXX(char volume, int state);
      

  2.   

    ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconinteroperatingwithunmanagedcode.htm
      

  3.   

    [DllImport("SHP_A3.dll")]
    public static extern int  SsmCheckActualPickup(int ch);
      

  4.   

    谢谢各位解答
    顺便问一下
    struct strout
    {
    CString errtext;
    CString out1;
    CString out2;
    CString out3;
    CString out4;
    CString out5;
    CString out6;
    CString out7;
    CString out8;
    CString out9;
    CString out10;
    CString out11;
    CString out12;
    CString out13;
    CString out14;
    CString out15;
    CString out16;
    CString out17;
    CString out18;
    CString out19;
    CString out20;
             CString out21;
    CString out22;
    CString out23;
    CString out24;
    CString out25;
    CString out26;
    CString out27;
    CString out28;
    CString out29;
    CString out30;
    };
    这是VC的代码
    这个如果用C#改那就是用Struct吗?
      

  5.   

    不是用struct转换,那么见到了事的。
    所谓API调用,真正的问题就是数据类型转换上,如果LZ想调用这样结构的API,恐怕有难度,基本上就是一堆内存访问的错误。
    要么原先库的接口重写,要么把那个VC写的DLL再包装一次,包装成为COM,再用C#调用。
      

  6.   

    那我没有那个DLL的源代码有什么办法吗???