上层UI使用C#编写,引擎使用C++编写,并打成com
UI 中调用COM 时,由UI分配空间,如 int[] pdata = new int[10],传递给com时我传递  ref pdata[0],即可在com中完成对该段地址的赋值。
现在如果回调函数传递数组应该怎样做呢?
就是在com中分配地址 如  byte* data = (byte*)CoTaskMemAlloc(10*sizeof(byte));传递的时候传递  byte data[]
在上层ui怎样接受呢?如果形参使用ref byte data 只能接受一个值,如果形参使用 byte[] data,根本无法进入回调,我想可能是因为c#中数组应该是对象
那位大神赐教下......................

解决方案 »

  1.   

    没做过 // 方法1,用静态变量进行返回
    char *SubFunction(void)
    {
    static char szText[5] = "adfa"; // 用静态空间
    //对p进行赋值操作
    return szText;
    }
    void Caller() // 这个函数调用SubFunction
    {
    TRACE("%s\n", SubFunction);
    }// 方法2,用指针传递
    void SubFunction(char *pText1, char *pText2)
    {
    // 对pText1, pText2运算
    strcpy(pText1, "love");
    strcpy(pText2, "you");
    return;
    }
    void Caller() // 这个函数调用SubFunction
    {
    char szText1[5], szText2[5]; // 当然这里也可以动态分配内存
    SubFunction(szText1, szText2); // szText1, szText2就是带回的值
    TRACE("%s %s\n", szText1, szText2);
    }
      

  2.   

    你说的东西,跟我问的问题没关系呀,感谢支持!熟悉c#下使用com组件的大神出现呀