c#中使用托管和非托管dll

     狭义解释讲,托管DLL就在Dotnet环境生成的DLL文件。非托管DLL不是在Dotnet环境生成的DLL文件,比如用vc 6.0写的。

     托管DLL文件,可以在Dotnet环境通过 “添加引用” 的方式,直接把托管DLL文件添加到项目中。然后通过 Using  DLL命名空间,来调用相应的DLL对象和方法。

    

    非托管DLL文件,在Dotnet环境应用时,就不能使用上诉方法,会报错:

        

对于非托管的dll,可以通过 DllImport 调用:

using System.Runtime.InteropServices;//必须要有

namespace USEDLL
{
public class spdll
{

           [DllImport("spdll.dll")]

           Public Static extern int myadd(int i);

        }

}

引入命名空间using SUEDLL;然后就可以在别的类中使用该函数了。


注:

1.这里指定的是相对路径,即spdll.dll必须放入项目的debug目录中才可以,否则会提示无法加载的错误。当然也可以指定绝对路径:

[DllImport("E:\\spdll.dll")],里面有个”\“是转义符。

2.将函数重新声明成static 和 extern类型,static 表明它是一个静态方法,就不必对类进行实例化才能用。extern告诉我们该方法的实现在别处。

3.本方法属于静态调用动态链接库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值