狭义解释讲,托管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.本方法属于静态调用动态链接库。