温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#怎么使用DLLImport调用外部DLL

发布时间:2022-04-25 13:49:25 来源:亿速云 阅读:300 作者:iii 栏目:开发技术

本文小编为大家详细介绍“C#怎么使用DLLImport调用外部DLL”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么使用DLLImport调用外部DLL”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

C#.Net调用基本格式:

DllImport 属性提供非托管 DLL 函数的调用信息。

[DLLImport(“DLL文件路径”)]
修饰符 extern 返回值类型 方法名称(参数列表) 如:

using System.Runtime.InteropServices;
[DllImport(  "KERNEL32.DLL", 
             EntryPoint="MoveFileW", 
             SetLastError=true, 
             CharSet=CharSet.Unicode, 
             ExactSpelling=true, 
             CallingConvention=CallingConvention.StdCall
          )
]
public static extern bool MoveFile(String src, String dst);

调用DLL中的非托管函数一般方法

首先,应该在C#语言源程序中声明外部方法,其基本形式是:

其中:

DLL文件:包含定义外部方法的库文件。

  • 修饰符: 访问修饰符,除了abstract以外在声明方法时可以使用的修饰符。

  • 返回变量类型:在DLL文件中你需调用方法的返回变量类型。

  • 方法名称:在DLL文件中你需调用方法的名称。

  • 参数列表:在DLL文件中你需调用方法的列表。

注意:需要在程序声明中使用System.Runtime.InteropServices命名空间。

其它可选的 DllImportAttribute 属性:

  • EntryPoint :指定要调用的 DLL 入口点。

  • SetLastError :判断在执行该方法时是否出错(使用 Marshal.GetLastWin32Error API 函数来确定)。
    C#中默认值为 false。

  • CharSet :控制名称及函数中字符串参数的编码方式。默认值为 CharSet.Ansi。

  • ExactSpelling:是否修改入口点以对应不同的字符编码方式。

  • CallingConvention:指定用于传递方法参数的调用约定。默认值为 WinAPI。该值对应于基于32位Intel平台的 __stdcall。

  • BestFitMapping :是否启用最佳映射功能,默认为 true。 最佳映射功能提供在没有匹配项时,自动提供匹配的字符。 无法映射的字符通常转换为默认的“?”。

  • PreserveSig:托管方法签名是否转换成返回 HRESULT,默认值为 true(不应转换签名)。并且返回值有一个附加的 [out, retval] 参数的非托管签名。

读到这里,这篇“C#怎么使用DLLImport调用外部DLL”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI