C++中的方法定义如下:
EncryptFun(char pw[],char key[],bool jiami,char *ReturnCode)char pw[] 要加密的内容
char key[] 密钥
bool jiami (1为加密,0为解密)
char *ReturnCode 返回加解密内容
        [DllImport("NetData.dll")]
        public static extern void EncryptFun(
            [MarshalAs(UnmanagedType.BStr)] string strPassword,
            [MarshalAs(UnmanagedType.BStr)] string strKey,
            [MarshalAs(UnmanagedType.I1)] bool bEncryptType,
            [MarshalAs(UnmanagedType.LPTStr)] StringBuilder strReturn);        public StringBuilder DecryptRegistSN(string password, bool type)
        {
            StringBuilder strReturn = new StringBuilder();
            EncryptFun(password, "dtxy", type,strReturn);
            return strReturn;
        }现在取不到值,麻烦高手解决下

解决方案 »

  1.   

      [DllImport("NetData.dll")]
      public static extern void EncryptFun(string strPassword,string strKey,bool bEncryptType,ref string  strReturn);试试
      

  2.   

    StringBuilder strReturn = new StringBuilder();
    你这样分配,是默认的大小,
    你必须知道char *ReturnCode这个参数返回后大小,或至少分配的空间大于它。你也可以用byte【】代替它,但是必须分配
      

  3.   

    [DllImport("NetData.dll",CharSet = CharSet.Ansi)]
      public static extern void EncryptFun(StringBuilder strPassword,StringBuilder strKey,byte bEncryptType,StringBuilder strReturn);
    这样就可以了,用string,string,byte,ref string 也可以