我想知道最顶层的声明引用是什么,以及为什么我们仍然需要使用 DllImport?我在谈论 C#。
using
语句引用托管库作为任何基类库。当您需要调用非托管代码时,它会被使用。
举个例子,您可能需要调用Windows API函数,在这种情况下,您可以声明类似以下的内容:
[DllImport("Advapi32.dll", EntryPoint="GetUserName", ExactSpelling=false,
SetLastError=true)]
static extern bool GetUserName(
[MarshalAs(UnmanagedType.LPArray)] byte[] lpBuffer,
[MarshalAs(UnmanagedType.LPArray)] Int32[] nSize );
references: http://www.csharphelp.com/2006/01/call-unmanaged-code-part-1-simple-dllimport/
using
指令用于从已引用的托管程序集中包含命名空间。
DllImport
用于从非托管 DLL 中导入方法。
DLLImport用于将本地dll库导入到托管(.net)应用程序中。例如,用C++编写的库可以被导入并在您的c#项目中使用。
Using用于引用位于其中一个托管引用的dll中的命名空间。这些通常是.net程序集。
DllImport 用于导入一个不受 .NET 管理的 DLL 中包含的函数。而 using 语句则是为了让你的代码可以轻松引用其他 .NET 组件,而无需使用完全限定名称。
Visual Studio 会为您创建基本引用(例如 System)。
除非您想使用本地库,否则不需要使用 DllImport。