当前位置:  编程技术>c/c++/嵌入式

链接库动态链接库详细介绍

    来源: 互联网  发布时间:2014-10-11

    本文导语:  windows中,链接库分为两种类型:静态链接库.lib和动态链接库.dll。其中动态链接库在被使用的时候,通常还提供一个.lib,称为引入库,它主要提供被Dll导出的函数和符号名称,使得链接的时候能够找到dll中对应的函数映射。 ...

windows中,链接库分为两种类型:静态链接库.lib和动态链接库.dll。其中动态链接库在被使用的时候,通常还提供一个.lib,称为引入库,它主要提供被Dll导出的函数和符号名称,使得链接的时候能够找到dll中对应的函数映射。
静态链接库和动态链接库的作用相似,都是提供给其他程序进行调用的资源。其中,动态链接库的调用方法分隐式调用(静态导入调用)和显示调用(动态导入调用)。 

编译环境:
Microsoft Visual Stdio 2010
--------------------------------------------------------------------------------
DLL导出符号
例,首先生成一个dll1.dll和dll1.lib
代码如下:

// DLL1工程,dll1.cpp
// _declspec(dllexport)为导出符号
_declspec(dllexport) int add(int a, int b)
{
return a + b;
}

利用微软的depends工具查看dll1.dll,导出的符号如下:
 
其中各字段意义:Ordinal(符号序号,后面使用GetProcAddress的时候,参考的数值),Hint(这个我也不是太明白,据说是不用了解),Function(这个就是函数导出后的符号名称了),EntryPoint(这个是函数在DLL中的地址)。
这里之所以函数的名称变成了这样子,是因为使用的编译器默认使用C++方式进行编译,由于C++支持重载,那么需要给函数名增加额外的符号,来使与同名的重载函数区分开来,才能在DLL中通过符号名来进行定位。
这里可以做个简单的测试,新建控制台测试工程DllTest如下。
代码如下:

// DllTest工程,DllTest.cpp
#include
using namespace std;
int main(void)
{
// extern int add(int a, int b);
// _declspec(dllimport)是导入声明,这种方式比上面的方式更有效,同时编译器能边编译出更加高效的代码。
_declspec(dllimport) int add(int a, int b);
cout

    
 
 

您可能感兴趣的文章:

  • 静态库,动态库,静态链接和动态链接
  • .a文件的动态链接和静态链接问题
  • linux动态链接库里全局变量和静态变量会导致动态库不可重入吗?
  • 动态库链接 变为 静态库链接问题
  • gdb调试动态链接库
  • 请教关于动态链接库的问题
  • 动态链接库转换?
  • 编译时如何区分动态链接和静态链接?
  • linux下链接一个动态库后原有程序不能正常运行
  • 关于动态链接库,翻译一段文字
  • linux下动态链接库函数找不到
  • 问一个编译动态链接库的问题
  • so动态链接库的问题
  • linux能否使用*.DLL型动态链接库
  • 请教linux9。0中使用动态链接库的问题
  • 多线程中动态链接库的使用
  • Linux动态链接的疑惑
  • Linux下的关于动态链接库
  • 动态链接库路径如何设置?
  • 动态链接库调用问题.
  • HTML 超链接详细介绍
  • shell查找符号链接及其指向目标的方法介绍
  • HTML URL 链接 ( 统一资源定位器 )定义及用法详细介绍
  • Android实现TextView中文字链接的4种方式介绍及代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • HTML 5 <base> 标签-规定页面中所有链接的基准 url
  • 如何在一个静态链接库中链接另一个静态链接库?
  • HTML 5 <a>定义超链接标签
  • 未使用链接器输入文件,因为链接尚未完成
  • ​Docker 容器数据管理,链接容器,构建私有库
  • 讨论一下UNIX中的硬链接与符号链接
  • linux中静态链接库调用了另一个静态链接库
  • 如何判断是否是硬链接 或者是软链接 还是源文件
  • 链接器链接目标文件和printf.o是怎么连接的
  • 编译静态链接库,其中使用了其它链接库,该如何写makefile
  • linux中都有哪些链接方式,创建链接的命令是什么?
  • 什么是符号链接,什么是硬链接?他们的区别是什么?
  • 怎样在点击某个链接时弹出YES/NO对话框?只有yes时才进入此链接。
  • linux下静态库使用:"未使用链接器输入文件,因为链接尚未完成"
  • linux下什么函数是用来“创建软链接和硬链接的呢“有么,今天突然想到这个问题。。
  • jquery代码-在弹出窗口中打开链接和在选项卡中打开链接
  • linux中静态链接库调用了另一个静态链接库 iis7站长之家
  • 求助,长链接与短链接的区别
  • 关于软链接和硬链接的问题
  • aaa.jsp有如下链接,当单击该链接时将id值传递给bbb.jsp,怎样在bbb.jsp中引用这个id值?
  • 当鼠标移过链接和图象映射区时,如何在这个链接旁边显示一个文本区,谢谢!




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3