在C++的dll中有个函数参数是char *a,里面存的数据实际上是Byte型的吧,因为参数是存的图片数据,肯定有ASCII大于127的。我在C#中重新定义应该是个什么型呢?Byte[]?还是什么。
还有个int *b,在原来的C++函数里是一个输出值,我重新定义应该是个什么型呢? out int b吗?

解决方案 »

  1.   

    可以使用IntPtr,很保险,自己分配个内存地址然后传给C++
      

  2.   

    你编译的DLL(C++环境)是标准的DLL吗?
    一般donet环境使用互操作对COM组件操作,有的DLL需要注册,有的不需要
      

  3.   

    int __declspec(dllexport) GetData(char *pData,int *pLen);
    这个是得到图像数据,存在pData里,长度存在pLen
    如果我在C#里用这个函数是怎么用
      

  4.   


    [DllImport("xxx.dll", EntryPoint = "GetData", CharSet =CharSet.Ansi
               ,CallingConvention=CallingConvention.Cdecl)]
    public static extern int GetData(IntPtr pData,refint pLen);