zoukankan      html  css  js  c++  java
  • VC++ DLL 1 一点概念

    1、在写代码的时候,我们可能会经常要用到一些封装好的函数或者类,这些可能是C/C++的标准库提供的,也可能是由别人开发的非标准库,这个时候就会涉及到动态链接库或者静态链接库的使用了。

    举个例子,做图像处理的时候会用到OpenCV,那么很显然,OpenCV不是C/C++的标准库,是英特尔公司开发的一套免费的图像处理工具,或者叫图像处理库,我们在使用它的时候就需要在工程中载入头文件、lib文件等,但是有这些东西是仅仅可以编译程序,但是如果我们在文件夹中双击生成的exe文件的时候就会发现,可能会提示找不到xxx.dll之类的信息。上述过程我们用到的头文件。

    dll全称是动态链接库(Dynamic Linkable Library),与之区别的有静态链接库(static Linkable Library)。

    2、静态链接库和动态链接库都是共享代码的方式,两者的区别如下:

    (1)、静态链接库(lib)中的所有指令都会被添加到exe文件中;dll是与exe文件独立的,仅在exe文件执行的时候进行加载或者卸载dll文件;

    (2)、静态链接库不能包含其他静态链接库或者动态链接库;动态链接库可以包含其他动态链接库或者静态链接库;

    3、dll的编制和具体的语言是无关的,也就是说我用C++写的dll是可以被其他语言调用的,其他语言同理;但是要遵循约定的dll的接口规范和调用方式,之前在一家公司实习的时候就遇到过这种情况,我们算法组使用C/C++来写程序的,但是软件组的软件是用C#来写的,当时,我就是用dll的方式提供给对方调用的,当然,还涉及到C#写的exe与c++写的exe之间的其他通信方式。

    4、在windows系统上,dll的使用算是随处可见的,最直接的例子就是在C盘的windows/systems32文件夹中就有很多跟系统和软件运行相关的dll文件:

        kernel32.dll中的函数主要处理内存管理和进程调度;

        user32.dll中的函数主要控制用户界面;

        gdi32.dll中的函数则负责图形方面的操作;

    5、VC 动态链接库的分类:

        (1)、Non-MFC DLL(非MFC动态库):不采用MFC 类库结构,其导出函数为标准的C接口,能被MFC或者非MFC的程序调用;

        (2)、MFC Regular DLL(MFC 规则DLL):包含一个继承自CWinApp的类,但是没有消息循环;

        (3)、MFC Extension DLL(MFC 扩展DLL):只能被MFC类库所编写的程序调用;

    兰陵美酒郁金香,玉碗盛来琥珀光。

    但使主人能醉客,不知何处是他乡。

      --李白 《客中行 / 客中作》

    上善若水,为而不争。
  • 相关阅读:
    Visual Basic 9.0 前沿播报·静态篇(二)对象初始化器和匿名类型
    Visual Basic 9.0 前沿播报内容概览
    Refactor! for VB —— VB2005的重构支持(一)
    我不知道该说什么,这里太先进了!
    Visual Basic 9.0 前沿播报·静态篇(一)局部变量类型推测和数组初始化器
    关于“就地颠倒句子里的词”面试题
    Visual Basic 9.0 前沿播报·静态篇(三)扩展方法
    《窝窝世界》视频20101025
    Silverlight 游戏开发小技巧:透明背景的Silverlight程序
    Silverlight 游戏开发小技巧:技能冷却效果2(Cooldown)2
  • 原文地址:https://www.cnblogs.com/Bearoom/p/11721795.html
Copyright © 2011-2022 走看看