"使用"vs [DllImport]?

Kou*_*osh 8 c# pinvoke using dllimport

我想知道什么是最顶级声明的引用,为什么我们仍然需要使用DllImport?我在说C#.

wsa*_*lle 10

MDSN文档:

在重用托管应用程序中的现有非托管代码时,DllImport属性非常有用.例如,您的托管应用程序可能需要调用非托管WIN32 API.

基本上,当您编写.NET应用程序,并且库没有托管包装器(它是用非托管代码编写)时,您需要使用DllImport与其进行互操作.否则,您可以使用using类似于通常任何基类库的语句来引用托管库.


dcp*_*dcp 5

当您需要调用非托管代码时使用它.

例如,您可能需要调用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 );
Run Code Online (Sandbox Code Playgroud)

参考文献:http: //www.csharphelp.com/2006/01/call-unmanaged-code-part-1-simple-dllimport/