admin 管理员组文章数量: 1184232
2024年3月20日发(作者:share花体英文)
请问C#高手:[DllImport()]是什么意思??
展开全文
请问C#高手: [DllImport("")]是什么意思??
这叫引入这个动态连接库。
这个动态连接库里面包含了很多WindowsAPI函数,如果你想使用
这面的函数,就需要这么引入。举个例子:
[DllImport("")]
private static extern void 函数名(参数,[参数]);
函数名就是一个属于里的一个函数。完了你就可以
用那个函数了。
调用这个DLL里面的API接口!
系统API
例如
[DllImport("")]//--引入API
public
调用该方法是和调用普通方法没区别
DLL Import 属性
现在是更深入地进行探讨的时候了。在对托管代码进行 P/Invoke
调用时,DllImportAttribute 类型扮演着重要的角色。
DllImportAttribute 的主要作用是给 CLR 指示哪个 DLL 导出您想要调
用的函数。相关 DLL 的名称被作为一个构造函数参数传递给
DllImportAttribute。
如果您无法肯定哪个 DLL 定义了您要使用的 Windows API 函数,
static extern ReturnType FunctionName(type
arg1,type arg2,...);//--声明方法
Platform SDK 文档将为您提供最好的帮助资源。在 Windows API 函
数主题文字临近结尾的位置,SDK 文档指定了 C 应用程序要使用该函
数必须链接的 .lib 文件。在几乎所有的情况下,该 .lib 文件具有与定
义该函数的系统 DLL 文件相同的名称。例如,如果该函数需要 C 应用
程序链接到 ,则该函数就定义在 中。您可
以在 MessageBeep 中找到有关 MessageBeep 的 Platform SDK 文
档主题。在该主题结尾处,您会注意到它指出库文件是 ;
这表明 MessageBeep 是从 中导出的。
可选的 DllImportAttribute 属性
除了指出宿主 DLL 外,DllImportAttribute 还包含了一些可选属
性,其中四个特别有趣:EntryPoint、CharSet、SetLastError 和
CallingConvention。
EntryPoint 在不希望外部托管方法具有与 DLL 导出相同的名称的
情况下,可以设置该属性来指示导出的 DLL 函数的入口点名称。当您
定义两个调用相同非托管函数的外部方法时,这特别有用。另外,在
Windows 中还可以通过它们的序号值绑定到导出的 DLL 函数。如果
您需要这样做,则诸如“#1”或“#129”的 EntryPoint 值指示 DLL
中非托管函数的序号值而不是函数名。
CharSet 对于字符集,并非所有版本的 Windows 都是同样创建
的。Windows 9x 系列产品缺少重要的 Unicode 支持,而 Windows
NT 和 Windows CE 系列则一开始就使用 Unicode。在这些操作系统
上运行的 CLR 将Unicode 用于 String 和 Char 数据的内部表示。但
也不必担心 — 当调用 Windows 9x API 函数时,CLR 会自动进行必
要的转换,将其从 Unicode转换为 ANSI。
如果 DLL 函数不以任何方式处理文本,则可以忽略
版权声明:本文标题:请问C#高手:[DllImport(kernel32.dll)]是什么意思?? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710917155a579487.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论