|
怎么调用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;
}
} |
|