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

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

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

    

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

        c#中使用托管和非托管dll_第1张图片

对于非托管的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.本方法属于静态调用动态链接库。

你可能感兴趣的:(.NET,平台调用)