我的算法是用C++写的,C#把数组a的地址,和i值(i为数组元素的下标,比如i为100,就取数组前100个元素)传给C++,然后C++通过计算的到一个数组b,我再把这个数组b传给C#,请问大家这个接口如何写,最好给我个范例,谢谢了

解决方案 »

  1.   

    看看这个:
    创建Win32 DLL,并在C#里面调用
    http://blog.csdn.net/tangl_99/archive/2006/09/06/1182354.aspx
      

  2.   

    首先要看你的数组里是什么类型的,然后才好定义接口函数转换类型。
    你发详细点的说明。比如数组里的是 int ,byte 还是结构类型?你在c++中写一个dll接口函数供c#调用就行了,这个函数的功能就是你需要的,函数参数是(传入数组、下标、返回数组)。这样就可以了。注意这个接口函数中传入数组和返回数组都是在C#中要先定义的,通过这个接口函数c++代码访问c#的内存取数据,计算,然后再往c#内存写入返回数据。
      

  3.   


    c++中定义:
    int __stdcall ccapGetPicture(int index,,unsigned char *pFrameBuf);
    实现:
    extern "C" int ccapGetPicture(int index,unsigned char *pFrameBuf)
    {
      //计算
      return capGetPicture(index,pFrameBuf);
    }c#中定义dll接口函数:
      [DllImport("CEDll", EntryPoint = "ccapGetPicture")]
      public static extern int capGetPicture(int index,byte[] pFrameBuf,);
    调用函数:
      int index ;
      byte[] lpFrameBuffer;  lpFrameBuffer = new byte[320*240*3];
      capGetPicture(index, lpFrameBuffer);
      

  4.   

    我的这个是例子,而且这个返回int只是表示计算成功还是失败,真正的返回数据在unsigned char *pFrameBuf这里。
    说明:
      我传入int index是图片的序号,传回的是图片的内容,在unsigned char *pFrameBuf这里。
    在c#中就是byte[] pFrameBuf收到了c++写过来的图片内容.你明白意思就可以了.
    我的函数写成这样也是可以的:
    void __stdcall ccapGetPicture(int index,,unsigned char *pFrameBuf);