一开始,c函数返回值和参数均为char *.
char* Minus(char* Original, char* Ref);
c#调用时,传byte[],返回放到byte[]里.
byte[] result = Minus(original, ref);
结果运行时出错,返回值类型转换出错.然后在C#里试图把引用函数声明为byte*型输入输出,编译不通过.试图在c函数里把返回值和参数用char []编译不通过.又把函数改成void返回,用输出参数的方式实现.
void Minus(char* result, char* Original, char* Ref);
在c#里调用:
Minus(ref result, original, ref);
结果程序运行到这里直接退出,连错都不报.到底该如何实现呢?谢谢!

解决方案 »

  1.   

    那假如我就是要实现C#里byte数组的运算呢?c函数参数怎么写?
      

  2.   

    相关于这样一个c#函数,用c的dll实现,实然在c#里调用:
    byte[] MyFunction(byte[] array1, byte[] array2)
      

  3.   

    void Minus(char* result, char* Original, char* Ref);
    在c#里调用:
    byte[] result = new byte[100];//必须先分配空间Minus(result, original, ref); 因为不是值类型,就不需要ref了,直接调用就可以
      

  4.   

    试试Intptr,
    呵呵,不知道有没有这个东东?
      

  5.   

    要求比较多的话 就override tostring()