[C++/CLI编程宝典][5]编译与反汇编

本文详细介绍了C++/CLI的编译过程,包括使用cl.exe进行编译生成IL中间代码,探讨了JIT编译与NGen.exe的异同,以及如何使用ildasm.exe反编译IL中间语言,帮助开发者更好地理解和掌握C++/CLI的底层机制。
摘要由CSDN通过智能技术生成

 

通过上次的第一个简单的C++/CLI实例,我们已经对C++/CLI的基本语法有了一定的认识,一些新的关键字也混了个眼熟。其实如果你有ISOC++背景,了解一些.NET相关概念,且使用VS2008 IDE开发的话,相信到现在你已经可以使用C++/CLI写一些简单的小程序了。本次继续上次的sample来深入了解它的编译和反编译。 

1)编译

在安装了VS2008或WinSDK后,我们就拥有了很多的工具,其中Cl.exe就是用来编译C++代码的,对于Cl.exe的很多的选项可以查看msdn。这里结合上次的实例了解常用的选项,我们使用cl.exe /clr main.cpp来编译上次的实例,其中/clr选项表明要编译为托管的IL中间代码,因为我们知道ISOC++是可以直接编译为本地代码,main.cpp是我们要编译的C++文件名,其他的选项没有显式指定,使用默认。在执行次命令后会在与main.cpp相同的目录下产生main.obj和main.exe,且此时的main.exe是IL中间代码。编译过程如下图:

 

2)JIT编译

在上面我们看到main.cpp被编译连接后生成main.exe,我们知道exe是windows的可执行文件,但是上面的exe与我们传统的exe有所不同,这里的main.exe为IL中间语言的(IL中间语言我们可以先认为是一种高级的汇编语),它离真正的汇编语言还有一节距离,那么为什么IL中间语言的exe能够执行呢ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值