头文件中定义了:
extern void deskey(unsigned char *, short);在C编译器中调试如下,并通过
char str[]="tianshan";
 deskey("0123456789abcdef",EN0);//第一个参数是key   第二个是字定义的加密解密的宏   
 des(str,  str); 
 puts("加密后");
 puts(str);
puts("解密后");
deskey("0123456789abcdef",DE1);
des(str,  str); 
puts(str);
des()没有返回值,如何封装供C#调用呢? 调用怎么接收str呢?

解决方案 »

  1.   

    des(str, str);   中后面一个str是加密后的数据,怎么返回?
      

  2.   

    unsigned char *  就是返回值
      

  3.   

    extern "C" _declspec(dllexport) void __stdcall DES( OUT LPSTR lpszBuffer,IN LPCSTR lpszSource);
      

  4.   

    extern void des(unsigned char *, unsigned char *);
      

  5.   

    [DllImport("_____.dll")]
    extern  static void deskey(out string value, short i);
      

  6.   

    头文件:extern "C" __declspec(dllexport) void deskey(unsigned char *, short);
    extern "C" __declspec(dllexport) void des(unsigned char *, unsigned char *);//后一个参数是加密后的数据C#中
    [DllImport("wdll.dll", EntryPoint = "deskey", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]      public static extern void deskey(string key, short mode);
          [DllImport("wdll.dll", EntryPoint = "des", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]      public static extern void des(string str, out string value);  //这里怎么报错呢
      

  7.   

            [DllImport("wdll.dll", EntryPoint = "des", CharSet = CharSet.Ansi )]
            public static extern void des(string str, StringBuilder  value);        public static string DES(string str)
            {
                StringBuilder sb = new StringBuilder(256);
                des(str, sb);
                return sb.ToString();
            }