海是我向往的地方,吸纳和咆哮是他的魅力!!!

怎么调用DLL中的方法(转)

上一篇 / 下一篇  2008-06-03 09:30:22

怎么调用DLL中的方法


怎么调用DLL中的方法
lr 能不能调用c++写的DLL函数啊
项目中用到了加密的算法 是在程序中是调用一个DLL来实现的 我在lr中能调用这个c++写的dll吗
下面是对这个DLL函数中类说明 我可以直接调用Encrypt这个方法吗 Encrypt是传的一个字符窜 那在c中调用的时候这个字符串怎么传进去

例如

ret=lr_load_dll("Encryption.dll");
   if(ret!=0)
   {lr_message("Encryption.dll erro!");
   }
   else{
         Encrypt();//怎么调用这方法啊
   }


//////////////////////////////////////////////////////////////////
public class EncryptUtil
    {
        /// <summary>
        /// 声明加密的API函数调用
        /// </summary>
        /// <param name="pDataIn">要加密的字符串</param>
        /// <param name="iInputLength">要加密的字符串长度</param>
        /// <param name="pDataOut">加密后的字符串</param>
        /// <param name="iOutputLength">加密后的字符串长度</param>
        /// <returns>加密后的字符串长度</returns>
        [DllImport("Encryption.dll", EntryPoint = "EncryptV1", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        static extern int EncryptV1(Byte[] pDataIn, int iInputLength, Byte[] pDataOut, int iOutputLength);

        /// <summary>
        /// 声明解密的API函数调用
        /// </summary>
        /// <param name="pDataIn">要解密的字符串</param>
        /// <param name="iInputLength">要解密的字符串长度</param>
        /// <param name="pDataOut">解密后的字符串</param>
        /// <param name="iOutputLength">解密后的字符串长度</param>
        /// <returns>解密后的字符串长度</returns>
        [DllImport("Encryption.dll", EntryPoint = "DecryptV1", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        static extern int DecryptV1(Byte[] pDataIn, int iInputLength, Byte[] pDataOut, int iOutputLength);

        /// <summary>
        /// 对传入的字符串进行加密
        /// </summary>
        /// <param name="strInput">输入的字符串</param>
        /// <returns>加密后的字符串</returns>
        public static string Encrypt(string strInput)
        {
            // 取得加密后内容的长度
            Byte[] bytDataIn = System.Text.Encoding.GetEncoding("gb2312").GetBytes(strInput);
            int iDataLength = EncryptV1(bytDataIn, bytDataIn.Length, null, 0);

            // 为存储加密后的内容分配空间
            Byte[] bytDataOut = new Byte[iDataLength];

            // 执行加密
            iDataLength = EncryptV1(bytDataIn, bytDataIn.Length, bytDataOut, iDataLength);
            String strData = System.Text.Encoding.GetEncoding("gb2312").GetString(bytDataOut);

            return strData;
        }

        /// <summary>
        /// 对传入的字符串进行解密
        /// </summary>
        /// <param name="strInput">输入的字符串</param>
        /// <returns>解密后的字符串</returns>
        public static string Decrypt(string strInput)
        {
            // 取得解密后内容的长度
            Byte[] bytDataIn = System.Text.Encoding.GetEncoding("gb2312").GetBytes(strInput);
            int iDataLength = DecryptV1(bytDataIn, bytDataIn.Length, null, 0);

            // 为存储解密后的内容分配空间
            Byte[] bytDataOut = new Byte[iDataLength];

            // 执行解密
            iDataLength = DecryptV1(bytDataIn, bytDataIn.Length, bytDataOut, iDataLength);
            String strData = System.Text.Encoding.GetEncoding("gb2312").GetString(bytDataOut);

            return strData;
        }        
    }

TAG:

 

评分:0

我来说两句

Open Toolbar