C#使用DLLImport调用外部DLL的方法

 更新时间:2022年04月25日 11:56:55   作者:農碼一生  
这篇文章介绍了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的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C#中的lock、Monitor、Mutex学习笔记

    C#中的lock、Monitor、Mutex学习笔记

    这篇文章主要介绍了C#中的lock、Monitor、Mutex学习笔记,本文讲解的都是线程同步的一些知识,需要的朋友可以参考下
    2015-01-01
  • 浅析C#静态类,静态构造函数,静态变量

    浅析C#静态类,静态构造函数,静态变量

    这篇文章主要介绍了浅析C#静态类,静态构造函数,静态变量 的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • C#线程执行超时处理与并发线程数控制实例

    C#线程执行超时处理与并发线程数控制实例

    这篇文章主要介绍了C#线程执行超时处理与并发线程数控制的方法,实例讲述了并发执行存储过程的最大个数,读者可对程序稍做改动即控制并发线程数,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • C#多线程系列之任务基础(三)

    C#多线程系列之任务基础(三)

    本文详细讲解了C#多线程的任务基础,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C#线性渐变画刷LinearGradientBrush用法实例

    C#线性渐变画刷LinearGradientBrush用法实例

    这篇文章主要介绍了C#线性渐变画刷LinearGradientBrush用法,实例分析了线性渐变画刷LinearGradientBrush的相关使用技巧,需要的朋友可以参考下
    2015-06-06
  • C#自定义画刷原理解析

    C#自定义画刷原理解析

    这篇文章主要为大家详细介绍了C#自定义画刷原理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C#播放铃声最简单实现方法

    C#播放铃声最简单实现方法

    这篇文章主要介绍了C#播放铃声最简单实现方法,通过调用系统方法实现播放wav格式音频文件的功能,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • C#实现加密exe文件

    C#实现加密exe文件

    这篇文章主要为大家详细介绍了C#如何实现加密exe文件的功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-01-01
  • C# WinForm制作一个批量转化文件格式的小工具

    C# WinForm制作一个批量转化文件格式的小工具

    在生活中有时候会遇到批量转换格式的需求,一个个点太麻烦了,一个能够实现批量文件格式转换的工具非常有用,所以本文小编使用C# WinForm制作一个批量转化文件格式的小工具,文中有具体实现代码,需要的朋友可以参考下
    2023-11-11
  • C#创建线程带参数的方法

    C#创建线程带参数的方法

    本文给大家介绍C#创建线程带参数的方法,包括无参数线程的创建,带一个参数线程的创建及带两个及以上参数线程的创建,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-07-07

最新评论