wzw1982 发表于 2008-6-3 00:06:50

怎么调用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>
      
      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>
      
      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 = 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 = DecryptV1(bytDataIn, bytDataIn.Length, bytDataOut, iDataLength);
            String strData = System.Text.Encoding.GetEncoding("gb2312").GetString(bytDataOut);

            return strData;
      }      
    }

liming_oicq 发表于 2008-6-3 08:33:27

你可以将函数的算法做成一个DLL,然后对外发布这个算法的接口,通过lr_load_dll函数把DLL加载,然后就可以调用DLL中所发布的接口了
页: [1]
查看完整版本: 怎么调用DLL中的方法