发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
虽然调用非托管 DLL 函数与调用其他托管代码基本相同,但仍有一些差异会使 DLL 函数初看起来颇为费解。 本节包括以下主题,它们将说明某些与异常调用相关的问题。
从平台调用返回的结构必须为在托管和非托管代码中具有相同表示形式的数据类型。 因为这些类型不需要转换,因此称为“可直接复制到本机结构中的类型”(参见可直接复制到本机结构中的类型和非直接复制到本机结构中的类型)。 若要调用将非直接复制到本机结构中的结构作为其返回类型的函数,可以定义一个与非直接复制到本机结构中的类型具有相同大小的可直接复制到本机结构中的帮助器类型,并在此函数返回后转换数据。
说明用已定义的布局传送数据结构时的问题。
提供关于回调函数的基本信息。
描述如何实现托管代码中的回调函数。
描述如何使用平台调用来调用非托管的 DLL 函数。
描述如何声明方法参数以及将变量传递给由非托管库导出的函数。
来自: ThinkTank_引擎 > 《使用非托管 DLL 函数》
0条评论
发表
请遵守用户 评论公约
请问C#高手: [DllImport("kernel32.dll")]是什么意思??
下面是一个调用API函数的例子: [DllImport("KERNEL32.DLL", EntryPoint="MoveFileW", SetLastError=true, CharSet=CharSet.Unicode, ExactSpelling=true, CallingConvention=C...
在 C# 中通过 P/Invoke 调用Win32 DLL
(如果您无法肯定要看哪个头文件,则可以查看 Platform SDK 文档中列出的每个 API 函数的头文件。)如果您发现该API 函数确实定义为一个映射到以 A 或 W 结尾的函数名的宏,则字符集与您尝试调用的函数...
.NET工作机制
NET是虚拟机、.NET是一个平台 .NET只懂IL(中间语言)而这种中间语言是靠.NET中的一种支架来解析。支架(一种动态编译支架)把IL编译成代码...
如何在C#中调用C++方法
如下代码所示,我们声明了外部函数SendMessage(位于user32.dll中),EntryPoint属性可以省略不写,也可以指定一个函数名用来覆盖默认的行...
[C#防止反编译].NET 产品版权保护方案 (.NET源码加密保护)
[C#防止反编译].NET 产品版权保护方案 (.NET源码加密保护)[C#防止反编译].NET 产品版权保护方案 (.NET源码加密保护) 分类: C#/VS.N...
使用 Visual Studio 进行调试
本节描述与调试器相关的属性设置,以及为了使用 Visual Studio 调试器调试程序所需要的准备工作。启用此功能时,调试器仅显示和单步执行用户代码(“我的代码”),而忽略系统代码和其他经过优化或没有...
“ngen.exe ” CLR本机映像生成器
Ngen是MS提供的 本机映象生成器,它可以将中间语言程序集编译为本机代码存放在缓存中。3. 将程序集中的相关Method(方法)编译成Unmanaged(非托管代码) 下面介绍的内容是不管你是菜鸟,或是高手,...
从高级源码到机器码的过程,反射DLL加载卸载
我们说的学习并分析IL并不是IL,而是由IL这种汇编语言【相当于.Net平台的汇编语言,类似于Windows平台的汇编语言】编写的代码,我们可以...
你必须知道的C#的25个基础概念
紫霞仙子"); //隐式转换 Monster tmpObj1 = tmpImmortal; Console.WriteLine(tmpObj1.name); Monster tmpMonster = new Monster("孙悟空"); ...
微信扫码,在手机上查看选中内容