VC++ 非托管代码 & 托管代码
#pragma managed
#pragma unmanaged
看了好多好多非托管代码和托管代码之间相互调用,感觉都没有说在重点上,到底怎么用才是关键,理论的东西我们到微软官网上就可以找到,毕竟这个是微软创造的东西,说以这里就直说一下用法。
这里只说一下VC++,因为其他语言微软现在只支持.net了。也就是说C#和VB,开发出来的东西,基本上也就是.net的产物了(这个我也不是100%可定,至少在vs2008以后,只有VC支持非托管和托管混合了)。至于使用com之类的链接,可以跳过了。又不是底层开发,那个东西太繁琐了。
VC++支持托管和非托管代码混编,其实用的和简单,网上也有很多例子,不过我感觉太烦琐了。并且大部分是托管调用非托管代码(这个是有原因了,非托管代码比托管代码找的多,托管也是由于跨平台原因有微软提出的)。
#pragma managed和#pragma unmanaged是混编的关键所在。
.
#pragma managed
...托管代码...
#pragma unmanaged
...非托管代码
#pragma managed
...托管代码...
#pragma unmanaged
...非托管代码
.
就是这么简单,在一个混编工程中,如果你写的是非托管代码,使用#pragma unmanaged进行声明,如果是托管代码,使用#pragma managed进行声明,生成的工程就是一个混编工程,其中既有托管代码又有非托管代码,工程中的非托管代码和托管代码实现的函数和方法是可以互相调用的。只不过要注意类型,如果是字符串的话,还需要注意编码方式。工程要使用/clr(公共语言支持)就可以了。
既然有了混编工程,那么纯非托管和纯托管工程代码直接的调用就就不成问题了。
这里有的时候会出bug,找不到外部引用,我用vs 2012测试,就是关联工程之间不好使,要手动把生成的库指定到依赖工程的库中,不能通过工程之间的依赖引用来实现。可能是公共语言支持选项对工程引用起到了限定作用吧。
纯非托管 <-> 混编 <-> 纯托管
止于此。。。
VC++ 非托管代码 & 托管代码的更多相关文章
- CLR和.Net对象生存周期
标签:GC .Net C# CLR 前言 1. 基础概念明晰 * 1.1 公告语言运行时 * 1.2 托管模块 * 1.3 对象和类型 * 1.4 垃圾回收器 2. 垃圾回收模型 * 2.1 为什么需 ...
- (ETW) Event Trace for Windows 提高 (含pdf下载)
内容提纲 • 托管代码与非托管代码介绍 • 不安全代码介绍 • 用户模式与内核模式 • ETW执行流程分析 • 日志分析工具介绍:PerfView.exe ETW与非托管代码 • ETW依赖的So ...
- 【C#4.0图解教程】笔记(第1章~第8章)
第1章 C#和.NET框架 1..NET框架的组成 .NET框架由三部分组成(严格来说只有CLR和FCL(框架类库)两部分),如图 执行环境称为:CLR(公共语言运行库),它在运行期管理程序的执行. ...
- 斗地主你什么时候才会托管?(.NET中的托管于非托管)
文章部分引自<.NET4.0面向对象编程漫谈(基础篇)>第1章.NET面向对象编程基础(作者:金旭亮) 无意间看到一位四五岁左右小朋友在玩斗地主,总开始到结束,她一直都在使用“提示”(托管 ...
- CLR和.Net对象
CLR和.Net对象生存周期 前言 1. 基础概念明晰* 1.1 公告语言运行时* 1.2 托管模块* 1.3 对象和类型* 1.4 垃圾回收器 2. 垃圾回收模型* 2.1 为什么需要垃圾回收* 2 ...
- 01-.Net编程机制
.NetFarmwark特点: 多平台:该系统可以在广泛的计算机上运行,包括从服务器.桌面机到PDA和移动电话. 行业标准:该系统使用行业标准的通信协议,比如XML.HTTP.SOAP和WSDL. 安 ...
- IL 学习笔记
先上几篇博客链接: 一步步教你读懂NET中IL(图文详解) C#基础之IL 详解.NET IL代码 C# IL DASM 使用 你必须知道的.NET <C# to IL>.<Expe ...
- 组件与.NET互操作
组件 1.何谓组件技术? 组件技术就是利用某种编程手段,将一些人们所关心的,但又不便于让最终用户去直接操作的细节进行了封装,同时对各种业务逻辑规则进行了实现,用于处理用户的内部操作细节,甚至于将安全机 ...
- 06 ASP.net
ASP.net 第一天 理解浏览器与服务器概念,与WinForm的区别. C# IIS(Internet Information Service) 互联网信息服务 Java(Tomcat) Php(A ...
随机推荐
- 关于ping以及TTL的分析【转】
转自:http://blog.csdn.net/u013451221/article/details/46608881 首先介绍一下ping这个工具 ping [目标] 的意思就是向目标发送几个数据包 ...
- JavaScript正则表达
Javascript 与正则表达式 一.正则表达式(regular expression简称res) 1.定义: 一个正则表达式就是由普通字符以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找 ...
- hdu 4519(数学题)
郑厂长系列故事——体检 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total S ...
- 一、Ubuntu 简介
Ubuntu 是一个Linux 系统 Apt-Get apt-get 命令是一个强大的命令行工具,用于同 Ubuntu 的 Advanced Packaging Tool (APT) 一起执行诸如安装 ...
- Google Cloud服务免费申请试用以及使用教程
简介 Google Cloud Platform lets you build and host applications and websites, store data, and analyze ...
- Timeout watchdog using a standby thread
http://codereview.stackexchange.com/questions/84697/timeout-watchdog-using-a-standby-thread he simpl ...
- 关于AutoLayout(自动布局)那些事儿
这是博主的WWDC2012笔记系列中的一篇,完整的笔记列表可以参看这里.如果您是首次来到本站,也许您会有兴趣通过RSS,或者通过页面左侧的邮件订阅的方式订阅本站. AutoLayout在去年的WWDC ...
- UIView之userInteractionEnabled属性介绍-特殊子类覆盖多见于UIImageView和UILabel
属性作用 该属性值为布尔类型,如属性本身的名称所释,该属性决定UIView是否接受并响应用户的交互. 当值设置为NO后,UIView会忽略那些原本应该发生在其自身的诸如touch和keyboard等用 ...
- 【前端阅读】——《JavaScript应用开发技术详解指南》摘记&思维导图
读这本书,我主要关注三个部分:JavaScript内置函数,程序调试以及Ajax基础.由于多是介绍基本概念,所以,采用思维导图的方式,做了一个梳理,以下就是精简的主要内容. 注:转载请注明出处
- HDU 3591 The trouble of Xiaoqian(多重背包+全然背包)
HDU 3591 The trouble of Xiaoqian(多重背包+全然背包) pid=3591">http://acm.hdu.edu.cn/showproblem.php? ...