关于C#调用VC++ DLL

由于在C#调用VC的DLL文件不能直接引用,那么,我们可以通过以下办法解决。

DLL文件分为托管和非托管,在调用托管的很好办,直接被使用的需要引用,间接使用的需要拷贝到bin目录下.非托管的处理会比较麻烦,实际上,你拷贝到bin没有任何帮助,因为CLR会把文件拷贝到一个临时目录下,然后在那运行web,而CLR只会拷贝托管文件,这就是为什么我们明明把非托管的dll放在了bin下却依然提示不能加载模块了.那么,就可以直接放在system32的目录下,或者自己重新建个文件夹。

调用DLL中的方法

首先,应该在C#语言源程序中声明外部方法,其基本形式是:

[DLLImport("DLL文件")]

修饰符extern返回变量类型方法名称(参数列表)

如:

        /// <summary>
/// 解密字符串
/// </summary>
/// <param name="strDeciphering">需要解密的字符串</param>
/// <returns>返回解密后的字符串</returns>
[DllImport("desdll.dll", EntryPoint = "Desec", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern string deciphering(string strDeciphering);

/// <summary>
/// 解密字符串
/// </summary>
/// <param name="strDec">需要解密的字符串</param>
/// <returns>返回解密的字符串</returns>
public string GetDeciphering(string strDec)
{
return deciphering(strDec);
}

对于 DllImport  必须在方法的前面(具体参考MSDN),EntryPoint  = "Desec" 表示DLL内的函数名(写错了会提示找不到 入口)。在 deciphering(string strDeciphering) 中的参数表示函
数的需要的参数。

只有需要用的时候直接调用
GetDeciphering(string strDec) 方法即可。

转载于:https://www.cnblogs.com/albert-struggle/archive/2011/07/25/2116389.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值