在做C#开发的过程中,必然会遇到很多DLL,也就是动态链接库文件,就像其他code一样,也分为managed code 和 unmanaged code.

其实跟普通的代码一个道理。那么我们先看看在windows 平台上managed code和 unmaged code 的区别.

大的背景:

出现的语境

首先呢managed code 和 unmanaged code,一般出现在.net 语言环境里面。

简单的说: managed code 就是执行的时候被运行时(runtime)管理的代码就是managed code。 相反,没有被运行时

接管的code就是unmanaged code。 这里的运行时(Common Language Runtime)可以是Mono 或者 .NET Framework o或者.NET Core,运行时负责编译managed code,然后执行。

运行时:

这里解释一下运行时: 运行时类似于java的虚拟机,它处理的对象不是machine code,而是中间语言 Intermediate Language (IL),而不是machine code。除此之外CLR 还负责自动内存管理,类型安全,边界安全等等

managed code:

managed code 使用.net 语言写的(C#, VB.net F#),

unmaged code :

在这里程序员就要负责很多事情: 内存管理,安全,全都是程序员的事儿。

IL(中间语言):

前面了解了 managed code,和unmanaged code, 在这个基础上就不难理解 managed dll,和unmanaged dll了:

使用.net dll最简单的办法就是放到bin目录底下

For using a .Net DLL (Assembly), the simplest option is to copy the dll to the bin folder.

可以使用工具来区分二者:

as an alternative, you can use the corflags.exe utility that is also included with Visual Studio Tools. Running it from the Visual Studio Command Prompt on an unmanaged assembly:

corflags UNMANAGED.DLL

..you'll get:

corflags : error CF008 : The specified file does not have a valid managed header

...whereas on a managed assembly, you'll get something like:

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 1
ILONLY    : 1
32BIT     : 0
Signed    : 0

managed DLL 和 normal DLL相关推荐

  1. c语言劫持dll写法,[原创]DLL劫持生成器 源码开放(纯WINDOWS SDK)+ 实例分析

    本菜最近学习了什么DLL注入啊,hook啊(r3)的相关技术,觉得很好玩,于是深入发现还有DLL劫持这种东西觉得挺好玩的,加上最近看到各种木马分析报告中都还有发现有利用白加黑的现象.于是自己想找几个来 ...

  2. Unity3D之Android加密DLL与破解DLL

    转自:http://blog.csdn.net/yupu56/article/details/53216705 1.加密方案 Unity 3D项目游戏逻辑采用C#脚本,我们知道C#编译生成的DLL或E ...

  3. 丢失msvcr120d.dll、msvcr120.dll、msvcp120d.dll、msvcp120.dll问题解决方法

    问题描述     运行程序时出现如下错误: 还有丢失msvcr120d.dll.msvcr120.dll.msvcp120.dll等问题,不一一列出图片了. 说明:     msvcp120d.dll ...

  4. libsybcomn64.dll php,libsybcomn.dll下载|

    libsybcomn.dll是一款重要的dll文件.当你发现电脑出现类似找不到libsybcomn.dll.libsybcomn.dll文件错误或libsybcomn.dll丢失等类似提示.就来下载我 ...

  5. VC程序编译成exe后需msvcr100.dll、msvcp100.dll才能运行的解决方法

    问题: vVC程序编译成exe运行提示缺少msvcr100.dll.msvcp100.dll文件. 要点: 1.将编译模式设置为 Release 模式,选择对应的Win平台32位或64位: 2.设置设 ...

  6. VC++6 开发MFC扩展DLL以及MFC DLL可以包含界面

    VC环境可以开发win32 DLL和MFC DLL:下面来开发一个MFC DLL:Win7, VC6: 新建一个MFC exe工程:名为mfcddd:在同级目录下新建一个文件夹,名为mfcbin: 默 ...

  7. 转 ajax.dll 与 ajaxpro.dll的用法

    转 ajax.dll 与 ajaxpro.dll的用法 文章分类:.net编程 ASP.NET AjaxPro的应用 1.首先下载AjaxPro组件.并将AjaxPro.dll引用到网站(或项目). ...

  8. 无法启动此程序,因为计算机中丢失msvcrtd.dll,Win7打开剑灵提示“丢失d3dx10_43.dll、MSVCRTD.dll文件”怎么办?...

    Win7打开剑灵提示"丢失d3dx10_43.dll.MSVCRTD.dll文件"怎么办?剑灵是一款大型的动作类游戏,最近一位Win7用户在运行剑灵游戏时,系统提示"计算 ...

  9. C#使用SQLite出错:无法加载 DLL“SQLite.Interop.dll”,找不到指定的模块

    在.net中使用sqlite数据库需要引用SQLite.Interop.dll引用,一帮添加两文件夹就可以了 64的和32位的里面分别包含了SQLite.Interop.dll 测试里也加上 但是有时 ...

最新文章

  1. Scratch青少年编程能力等级测试模拟题(四级)
  2. 《移动App测试实战》——2.2 App UI层面的自动化
  3. 使用 Xunit.DependencyInjection 改造测试项目
  4. callmode php_Rabbitmq各方法的作用详解
  5. matlab画一个电动机系统图,基于MATLABGUI的电机学仿真实验系统设计
  6. mysql存储过程语法和游标的语法_MySQL游标存储过程-语法点滴
  7. LOJ10157——皇宫看守(树形DP)
  8. 2021李宏毅机器学习课程笔记——Recurrent Neural Network
  9. PS2018下载PSCC2018安装教程
  10. zznuoj 2122
  11. Android 小宝宝买装备案列创建
  12. yarn application -kill application_id yarn kill 超时任务脚本
  13. 计算机数据采集管理系统的结构和功能,生产数据采集系统结构、功能及特点
  14. 极智装修知识|如何将效果图转化为实景的家? - 分享3
  15. ipad/ios按钮背景颜色为渐变色?去除iOS按钮渐变色
  16. Linux汇编代码中加打印,汇编语言中调用C函数打印“hello world”
  17. The Rust Programming Language - 第19章 高级特征 - 19.5 宏
  18. 【CTF】DDoS教程
  19. 【转载】利用ArcGIS Engine 二次开发的使用和总结
  20. 材料力学Ⅰ(第六版)第五章课后习题答案

热门文章

  1. 颈椎护理小助手,轻松缓解颈部酸痛,宾多康智能颈枕按摩器体验
  2. c语言---16 关于goto语句
  3. 利用Python里的cv2(opencv)改变图片大小【同时也是cv2.resize的学习】
  4. android rom结构_如何将新的ROM刷新到您的Android手机
  5. filevault(电子仓库)自动切换文件夹以及文档最大值设置
  6. python-树-BST_Traversal-二叉搜索树的遍历
  7. 【tensorflow 训练验证数据处理】制制作trian和val TXT的文件
  8. HbuilderX导入项目运行到微信小程序代码杂乱问题
  9. react 中 Warning A future version of React will block javascript 异常解决
  10. arch配置之百度网盘