c++的方法如下
_declspec(dllexport)  char* Test(char* pfile,RECT* rect,char* result,BYTE *pcut)
{    
rect->left=pcut[55500];
rect->right=20;
rect->top=30;
rect->bottom=40;
pcut[0]=100;
pcut[1]=200;
pcut[2]=300;
pcut[3]=400;
pcut[4]=500;
pcut[5]=600;
pcut[6]=700;
pcut[7]=800;
pcut[8]=900;
pcut[9]=110;
result="abcdef";
return  "0";
}
要求:pfile,rect,result,pcut这4个值既是入参也是出参,用C#代码调用,我的调用方式为:
Test(ref string pfile, ref Rectangle rect, ref IntPtr result, ref IntPtr pcut);
但未能成功!请教高手,如调成功立刻结帖,在线等!

解决方案 »

  1.   

    没有报错,除了rect获取到值外,其他的无法获取到pfile,result,pcut
      

  2.   


    //_declspec(dllexport)  char* Test(char* pfile,RECT* rect,char* result,BYTE *pcut) 
    [DllImport(dllname.dll, CharSet=CharSet.Ansi)]
    public static external string Test(
      ref string pfile,
      ref Rectangle rect,
      ref string result, 
      [MarshalAs(UnmanagedType.LPArray, SizeConst=10)]
      byte[] pcut
      );
      

  3.   

    函数成 
    void Test(string file,ref Rect rect,string result,btye[] cut);
      

  4.   

    pfile,和pcut还是获取不到值,我把现在的完整代码再帖一次,高手们看看有没有错
    _declspec(dllexport)  char* Test(char* pfile,RECT* rect,char* result,BYTE *pcut)
    {    
    rect->left=pcut[55500];
    rect->right=20;
    rect->top=30;
    rect->bottom=40;
    pcut[0]=100;
    pcut[1]=200;
    pcut[2]=300;
    pcut[3]=400;
    pcut[4]=500;
    pcut[5]=600;
    pcut[6]=700;
    pcut[7]=800;
    pcut[8]=900;
    pcut[9]=110;
    result="abcdef";
    pfile ="test";
    return  "0";
    }
    C#的:
    public static extern string Test(ref string pfile, ref Rectangle rect,ref string result, [MarshalAs(UnmanagedType.LPArray, SizeConst = 10)] byte[] pcut);