CLR via C# 读书笔记1-9

interop-example:C# CLR Win32 互操作示例 互操作示例 C# CLR Win32 互操作示例项目 此示例是在 Visual Studio 2013 中使用 C# .NET 4.5、C++/CLR 和 Win32 C++ 编写的。 此项目的目的是演示如何使用 CLR 包装器从 C# 中利用本机 Win32 库。 为简单起见,MathFunc dll 取自。 CLR 包装器和 C# 代码是我开发的,目的是学习和分享如何在不使用 P/invoke 的情况下实现本机库和 C# .NET 之间的互操作。 重要的提示: C# 可执行文件要求 MathFuncDll 位于工作目录中。 添加了构建后事件以自动将 dll 复制到输出目录中以避免 FileNotFound 问题。 立即下载

与非托管代码的互操作

CLR 提供3种与非托管代码的交互方案:
■ 托管代码通过使用 P/Invoke 机制 来调用DLL文件中的非托管函数
许多 FCL 中定义的类型内部都有调用到 Kernel32.dll, User32.dll 等等文件中的函数。同时许多程序语言会提供托管代码调用非托管代码的简便途径,比如 C# 程序能够直接调用 从Kernel32.dll 导出的 CreateSemaphore 函数。
■ 托管代码可使用已存在的 COM 组件(服务器)
为这些COM 组件生成一个托管程序集(它提供了该COM 组件的详细描述),其他的托管程序就能通过使用该生成的托管程序集进行互操作。详细请参考.NET Framework SDK 中的 TlbImp.exe 工具。 如果碰巧手头没有该工具,或者你想对 TlbImp.exe 生成的代码有更多自定义,你可以手工建立实现互操作功能的源代码。例如:你能在 C# 程序中使用 DirectX COM 组件。
■ 非托管代码可使用托管类型 (服务器)
为托管代码生成一个 COM 组件是最简单的方法。请参考.NET Framework SDK 中的 TlbExp.exe 和 RegAsm.exe工具。

提示:Microsoft 已经公开了以上工具 (Type Library Importer tool 以及 P/Invoke Interop Assistant tool)的源代码,请访问 http://CLRInterop.CodePlex.com/

随着 Windows 8 的发布,Microsoft 导入了新的 Windows API: Windows Runtime (WinRT)。这个 API 内部也是通过 COM 组件来实现,但是由于使用了ECMA 标准metadata来描述这些COM 组件,几乎所有WinRT API 都能被托管代码直接使用。

《CLR via C#》非托管代码互操作性提到的P/Invoke Interop Assistant 《CLR via C#》非托管代码互操作性提到的P/Invoke Interop Assistant开发工具,包含源代码,是从网站:http://clrinterop.codeplex.com/ 上下载的,作为备份 立即下载

相关推荐

Android 13 Hotseat定制化修改——001 hotseat布局方向

一.背景由于需求是需要自定义修改Hotseat,所以此篇文章是记录如何自定义修改hotseat的,应该可以覆盖大部分场景,修改点有修改hotseat布局方向,hotseat图标数量,hotseat图标大小,hotseat布局位置,hotseat图标禁止形成文件夹,hotseat图标禁止移动到Launcher...

Java_fenxiang的博客 1101

微软CLR Interop Team的CodePlex主页上线!Interop Assistant代码公开!

经过一段时间的筹备,在Team的几位PM的共同策划之下,在CodePlex上面的CLR Interop主页终于上线了。CodePlex是微软公司开办的一个开源网站,上面的项目主要以.NET相关为主。我们CLR Interop Team决定在这里建立一个主页,专门用于存放内部成员所开发的Interop相关工具。主页的地址是:http://www.codeplex.com/clrinterop 可能

张羿的优快云专栏 2665

用户行为数据分析 User Behavior Data from Taobao for Recommendation

一、提出问题 二、理解数据 数据来源 阿里云天池数据集:(https://tianchi.aliyun.com/dataset/dataDetail?dataId=649) 本文选取的数据集为UserBehavior.csv,共有5242880条数据。数据的具体类别如下表所示: 用户行为种类有四种,如下表所示 对于数据维度的说明如下: 在本文选取的2017年11月25日到2017年12月3日的时间范围内,不重复的用户数量为10202,不重复的商品ID数为412369,不重复的商品类目ID数为5859,

cccxxxqq的博客 5205

CLR Via C# 3rd 阅读摘要 -- Chapter 1 - The CLR's Execution Model

CompilingSource Code Into Managed Modules1.托管模块的组成:PE32 / PE32+ HeaderCLR HeaderMetadataIL Code2.元数据的用途:编译时不再需要头文件和类型库;为IDE提供智能感知(IntelliSense)特性;让CLR验证并执行哪些是“类型安全”(type-safe)的操作;序列化-反序列化;...

weixin_30768661的博客 193

通过电源模块降低电源噪声的3种方法

电源噪声是一种常见且不受欢迎的电气现象。如果不降低噪声,其会对敏感的医疗、测试测量、航空航天和国防系统的应用性能产生不利影响。当今的高精度模拟信号链系统需要直流/直流开关稳压器产生稳压电源轨,为低噪声应用中的模数转换器(ADC)、数模转换器(DAC)、现场可编程门阵列(FPGA)及其子系统供电。尽管直流/直流开关稳压器具有高工作效率,它们的开关操作会导致较大的不连续电流,从而产生较高的输入和输出电压纹波、频率尖峰和宽带噪声。

qq_43416206的博客 1423

MATLAB 控制 E4438C 信号源的研究

通过 MATLAB,我们可以实现对 E4438C 的远程控制,从而实现更高的自动化和可编程性。总结起来,通过使用 MATLAB 和 Instrument Control Toolbox,我们可以轻松地控制 E4438C 信号源并生成各种类型的信号。需要注意的是,以上代码仅为示例,实际应用中可能需要根据具体情况进行更详细的配置和错误处理。此外,MATLAB 还提供了一系列函数和命令,可用于控制 E4438C 信号源的其他功能,如频率调谐、功率设置、调制设置等。您可以根据自己的需求进行相应的配置和控制。

RswtPerl的博客 1012

C# 获取机器的硬件信息(CPU ID序列号, 主板信息,硬盘序列号,系统信息)

在很多情况下,你可能都需要得到微机的硬件信息。比如:你想给你的软件加锁,不让别人随便访问。 最有效的办法是获取CPU的序列号,然后让你的软件只能运行在有这样的CPU序列号的机器上。众所周知, CPU序列号是唯一的!因此,这样就可以为你的软件加锁了。 另外一个需要硬盘信息的例子是:硬盘有几个分区,每个分区各有多少剩余空间。当你正在做一个多媒体 应用程序的时候,你可能也需要获得有关声卡、显卡的

凉亭共饮 957

Weka学习笔记01:初探Weka世界

下载、安装和启动Weka、Weka数据格式

howard2005的专栏 1468

CLR Interop的开源项目

我的同事们最近在codeplex上发布了tlbimp的新版本。同时也在我们团队的博客上,第一时间里给出了介绍。参见以下链接: http://blog.youkuaiyun.com/SilverlightShanghai/archive/2009/03/13/3987754.aspx 微软越来越重视开源阵营,我们也在尝试着做一些开源项目。codeplex就是一个汇聚了微软开源项目的网站。我们CL

mountaintai二世的运动场 1670

2024全国村级行政边界数据

五级行政区划:村边界数据产品涵盖五级行政区划:(一级行政区)省级行政区共31个其中:(台湾、香港、澳门除外);(二级行政区)地级行政区共334个其中:7个地区、3个盟、30个自治州、294个地级市;(三级行政区)县级行政区共2851个其中:1355个县、117个自治县、49个旗、3个自治旗、363个县级市、962个市辖区、1个林区、1个特区;(四级行政区)乡级行政区共40497个其中:11626个乡、1034个民族乡、20117个镇、7566个街道、151个苏木、1个民族苏木、2个县辖区公所;

J_Giser的博客 3226

【零基础学习CAPL】——CAN报文的发送(CRC——ChecSum值)

本章主要介绍带有CRC值的报文发送一般报文可使用CANoe的IG模块直接发送,但带有CRC值的报文就只能编写脚本进行发送,以下详细讲解在配合Panel面板情况下,如何进行带有循环冗余码的报文进行报文的发送。

LOVE135149的博客 1910

C#之P/Invoke

PInvoke Resource 一、P/Invoke Instruction: Link: An Introduction to P/Invoke and Marshaling on the Microsoft .NET Compact Framework P/Invoke, or Pinvoke stands for Platform Invocation Services.  PI

Angelo Lee's Blog 1591

ardupilot 方向余弦矩阵/旋转矩阵的理解

本节主要记录自己对ardupilot中用到的方向余弦矩阵/旋转矩阵的理解,欢迎批评指正,有些资料参考网上写的比较好的资料,免得查找资料麻烦。旋转矩阵的坐标理解:表示从旋转矩阵的下标的坐标系的坐标变换到上标表示的坐标系坐标下。旋转矩阵的坐标系理解:表示从旋转矩阵的上标的坐标系变换到下标表示的坐标系下。从旋转矩阵的投影更好理解,比如下面旋转矩阵的第一行是左边坐标系的第一维分量在右边坐标系的投影。

陌城烟雨 612

CLR via C# 3 读书笔记(9):第1章 CLR执行模型 — 1.9 与非托管代码互操作

.NET Framework提供了大量其他开发平台没有的优势。但是,很少有公司能够下决心重新设计和实现既有代码。微软意识到了这一点,使CLR提供了一种机制,允许应用程序由托管和非托管的部分组成。具体来说,CLR支持三种互操作场景: 托管代码调用某个DLL中的非托管函数:托管代码调用DLL(动态链接库)中的非托管函数,可以使用P/Invoke(即Platform Invoke)机制。毕竟,FC...

weixin_30487317的博客 84

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

CLR基础之一---认识CLR [《CLR via C#》读书笔记]

《CLR via C#》读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runtime,简称CLR)是微软为他们的.Net虚拟机所选用的名称。这是通用语言架构(简称CLI)的微软实现版本,它定义了一个代码运行的环境。CLR运行一种称为“通用中间语言”的字节码,这个是微软的通用中间语言实现版本。 CLR运行在微软的视窗操作系统上...

weixin_30872499的博客 2241

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

NET CLR via C#读书笔记 - 第一章 CLR执行模型

NET CLR via C#读书笔记 - CLR执行模型CLR执行模型1.1 CLR简介1.2 CLR执行模型1.2.1 将源代码编译成托管模块 CLR执行模型 1.1 CLR简介 CLR(Common Language Runtime(公共语言运行时))可以简单理解为是一个支持多种编程语言及多语言互操作,完整的高级虚拟机。   程序在运行的时候有着惊人数量的运行时依赖。每个有用的程序都需要某些运行时函数库,以便其能跟电脑的其它资源(如用户输入设备,磁盘文件,网络通信等)交互,同时程序也需要转换成计算机硬

CreateNewWorld的博客 471

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

CLR via C# 读书笔记目录

一口气写了CLR via C# 两章的笔记,有些内容自己也似懂非懂,有些则觉得很好很强大,所以趁此机会作个目录同时为每篇文章打个评分:  纯理论,无聊 有参考价值,可看 有实用价值,必看 CLR via C# 读书笔记1-1: 托管模块 (Managed Modules)定义 CLR via C# 读书笔记1-2:程序集(Assemblies)定义 CLR via C# 读书笔记1-3

sqlchen的专栏 909

NET CLR via C#读书笔记 - 第七章 常量和字段

NET CLR via C#读书笔记 - 第七章 常量和字段1 常量1.1 常量定义1.2 常量的特点和限制2 字段2.1 字段定义2.2 字段修饰符 1 常量 1.1 常量定义   常量是从值不变化的符号,定义常量符号时,值必须在编译阶段就确认,编译后常量将保存在程序集的元数据中。 1.2 常量的特点和限制   ① 只能定义编译器支持的基元类型的常量,定义非基元类型的常量,必须要将值设置为null(意义不大)。   ② 常量值永不改变,通常被视为类型的一部分(被视为静态成员,而不是实例成员)。   ③ 定

CreateNewWorld的博客 219

[CLR via C#读书笔记]第一章 CLR执行模型

CLR简介 CLR(Common Language Runtime)是一个可以由多种语言使用的“运行时",它与具体使用哪种语言无关,只要编译器支持CLR,无论选择什么语言,相应编译器都会将代码编译成一个托管模块,即一个标准的32位PE(Portable Executable)文件或64位PE32+文件,该模块需要CLR才能执行。 CLR的主要功能包括(1)内存管理;(2)程序集加载;(

胖子没有错! 1302

NET CLR via C#读书笔记 - 第九章 参数

NET CLR via C#读书笔记 - 第九章 参数1 可选参数和命名参数1.1 代码示例1.2 可选参数以及命名参数的规则和原则2 以引用方式传参3 可变数量的参数 1 可选参数和命名参数 1.1 代码示例   可选参数就是函数包含默认值得形参,命名参数是指调用方法的时候通过指定参数名称来传递实参,代码示例如下: public sealed class Demo{ //定义含有默认参数值的函数 其中x,s就是可选参数 public void dpFunc(int x = 0,string s = "

CreateNewWorld的博客 264

《CLR via C#》读书笔记-.NET多线程(三)

主要记录了CLR线程池的基本知识、CLR线程池的几个常用方法,以及执行线程与辅助线程的上下文的“流动”,对应《CLR via C#》的26.1-26.3小节

郑林的专栏 981

CLR via C# 相关读书笔记

CLR via C# 2nd CLR via C# 3nd 麒麟.NET 转载于:https://www.cnblogs.com/michael110/archive/2011/03/07/1974517.html

anyanyu2851的博客 161

《CLR via C#》第六章 读书笔记

第六章 类型和成员基础 第一节 类型的各种成员 1、类型中可定义0个或多个以下种类的成员:常量、字段、实例构造器、类型构造器、方法、操作符重载、转换操作符、属性、事件、类型。 2、无论什么编程语言,编译器都必须能处理源代码,为上述每种成员生成元数据和IL代码。所有编程语言生成的元数据格式完全一致。这正是CLR成为“公共语言运行时”的原因。元数据是所有语言都生成和使用的公共信息。(疑问:面向...

qq_41543031的博客 241

CLR via C#读书笔记一:CLR的执行模型

CLR(Common Language Runtime)公共语言进行时是一个可由多种编程语言使用的“进行时”。 将源代码编译成托管模块 可用支持CLR的任何语言创建源代码文件,然后用对应的编译器检查语法和分析源代码。无论选择哪个编译器,结果都是托管模块(managed module)。托管模块是标准的32位Microsoft Windows可移植执行体(PE32)文件,...

198

《CLR via C#》第八章 读书笔记(未完结

第八章 方法 第一节 实例构造器和类(引用类型) 1、构造器方法在“方法定义元数据表”中始终叫做.ctor(constructor的简称)。创建引用类型实例时,首先为实例的数据字段分配内存,然后初始化对象的附加字段(类型对象指针和同步块索引),最后调用类型的实例构造器来设置对象的初始状态。 2、构造引用类型的对象时,在调用类型的实例构造器之前,为对象分配的内存总是先被归零。 3、实例构造器...

qq_41543031的博客 250
上一篇: CLR via C# 读书笔记1-8
下一篇: CLR via C# 读书笔记2-1
sqlchen
博客等级 码龄24年 10粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值