`
ugmtm78u
  • 浏览: 13883 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

DLL与LIB

 
阅读更多

DLL与LIB
2009年07月20日
  lib和dll
  lib和dll文件的区别和联系
  .dll是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll还有其他的文件格式如.ocx等,所有的.dll文件都是可执行。
  .lib是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的lib文件在那里。一般来说,与动态连接文件相对比,lib文件也被称为是静态连接库。当你把代码编译成这几种格式的文件时,在以后他们就不可能再被更改。如果你想使用lib文件,就必须:
  1 包含一个对应的头文件告知编译器lib文件里面的具体内容
  2 设置lib文件允许编译器去查找已经编译好的二进制代码
  如果你想从你的代码分离一个dll文件出来代替静态连接库,仍然需要一个lib文件。这个lib文件将被连接到程序告诉操作系统在运行的时候你想用到什么dll文件,一般情况下,lib文件里有相应的dll文件的名字和一个指明dll输出函数入口的顺序表。如果不想用lib文件或者是没有lib文件,可以用WIN32 API函数LoadLibrary、GetProcAddress   FreeLibrary(显示链接)。事实上,我们可以在Visual C++ IDE中以二进制形式打开lib文件,大多情况下会看到ASCII码格式的C++函数或一些重载操作的函数名字。
  一般我们最主要的关于lib文件的麻烦就是出现unresolved symble 这类错误,这就是lib文件连接错误或者没有包含.c、.cpp文件到工程里,关键是如果在C++工程里用了C语言写的lib文件,就必需要这样包含:
  extern "C"
  {
  #include "myheader.h"
  }
  这是因为C语言写的lib文件没有C++所必须的名字破坏,C函数不能被重载,因此连接器会出错。
  ===============================
  在VC中不用MFC如何制作dll
  方法一:使用export 和 import
  在VC中建立一个Console Application,建立2个文件:Dll.h 和 Dll.cpp
  Dll.h
  #ifdef MYLIBAPI
  #else
  #define MYLIBAPI extern "C" _declspec (dllimport)
  #end if
  MYLIBAPI int Add (int iLeft, int iRight)
  MYLIBAPI int Sub (int iLeft, int iRight)
  Dll.cpp
  #define MYLIBAPI extern "C" _declspec (dllexport)
  #include "Dll.h"
  int Add (int iLeft, int iRight)
  {
  return iLeft + iRight ;
  }
  int Sub (int iLeft, int iRight)
  {
  return iLeft - iRight ;
  }
  保存文件。
  在Project->setting->link 最下面加上 “/dll”, "/"之前一定要与前一项
  有空格。
  然后编译,就可以在debug 或 release下面找到dll 和 lib 文件了
  使用的时候包含dll.h文件
  方法二:使用def文件
  建立一个console application, 建立2个文件dll.h 和 dll.cpp
  Dll.h
  int Add (int iLeft, int iRight) ;
  int Sub (int iLeft, int iRight) ;
  Dll.cpp
  #include "Dll.h"
  int Add (int iLeft, int iRight)
  {
  return iLeft + iRight ;
  }
  int Sub (int iLeft, int iRight)
  {
  return iLeft - iRight ;
  }
  然后再当前目录下面建立一个.def文件,文件名最好和要输出的dll名字一样,扩展名
  为.def, 里面写上:
  LIBRARY dllname.dll
  EXPORTS
  Add @1
  Add @2
  然后将这个文件添加到工程中,
  在link中设置 /dll, 然后编译
  在debug或release中就可以找到dll和lib了
  使用的时候加上dll.h文件
分享到:
评论

相关推荐

    libmysql的dll与lib.zip

    《MySQL的libmysql.dll与lib文件详解》 MySQL是一款广泛使用的开源关系型数据库管理系统,其在Windows平台上的运行离不开特定的动态链接库(DLL)和库文件(LIB)。本篇文章将详细探讨“libmysql.dll”和“libmysql...

    libtiff dll与lib(32位与64位)可直接加载使用

    "libtiff dll与lib(32位与64位)可直接加载使用" 这个标题表明这是一个关于libtiff库的资源包,包含了用于不同操作系统位宽(32位和64位)的动态链接库(dll)和静态链接库(lib)文件,可以直接在程序中调用,无需...

    编译好的libtiff dll与lib (32位与64位)

    **编译好的libtiff DLL与lib:32位与64位详解** 在软件开发过程中,库文件(如.lib和.dll)是至关重要的组成部分,它们提供了预编译的函数和类供应用程序调用,以实现特定的功能。libtiff是一个开源的库,专门用于...

    sqlite在VC6下面的DLL与LIB文件

    本篇文章将详细探讨如何在VC6下使用SQLite的动态链接库(DLL)和库文件(LIB)。 1. **SQLite DLL文件**:DLL是Dynamic Link Library的缩写,是Windows操作系统中的一种共享库文件。在VC6项目中,如果你选择使用...

    DLL转Lib工具

    该压缩包中包含了一系列与DLL转Lib相关的辅助文件: 1. **dump.bat**:这是一个批处理文件,可能包含了自动执行DLL2Lib工具的命令行指令,简化转换过程。 2. **dumpbin.exe**:这是Microsoft Visual Studio附带的一...

    dll和lib混合调用

    这篇教程将深入探讨如何在DLL中调用LIB,并介绍与VC++(Visual C++)相关的实现细节。 首先,理解DLL的基本概念至关重要。DLL是一种可执行文件,它包含可由多个程序同时使用的函数和资源。当一个应用程序需要使用...

    DLL2LIB.zip

    DLL文件允许多个程序共享同一段代码和数据,从而节省系统资源,而LIB文件则是与DLL相配合,提供了链接器所需的信息,使得程序在编译时能够正确调用DLL中的函数。 "DLL2LIB.zip" 是一个专门用于处理DLL和LIB之间关系...

    DLL2LIB3.0

    在Windows操作系统中,DLL文件是包含可由多个程序共享的函数和资源的库,而LIB文件则供编译器在链接阶段使用,以便将函数调用与对应的代码连接起来。这个转换过程对于某些开发情境非常有用,例如当开发者希望在不...

    dll导出lib工具

    《DLL导出LIB工具详解与应用》 在Windows操作系统中,动态链接库(Dynamic Link Library,简称DLL)是一种可执行文件格式,它包含了可供其他程序调用的函数和数据。DLL有助于减少内存占用,便于代码共享,是软件...

    dll to lib 3.00 本人汉化版

    dll to lib 3.00 本人在破解版的基础上汉化 未汉化二进制里的字符串,使用ok

    dll和lib的区别

    《DLL与LIB的区别及其在软件开发中的应用》 在计算机编程领域,DLL(Dynamic Link Library)和LIB(Library)是两种常见的库文件类型,它们在软件构建和运行中发挥着关键作用。理解它们的区别和使用场景,对于优化...

    Dll to Lib 教程

    在编程领域,DLL(Dynamic Link Library)和LIB(Library)都是Windows操作系统中常见的库文件类型,它们各有不同的用途。DLL是一种动态链接库,它包含可由多个程序共享的代码和数据,有助于节省内存和磁盘空间。而...

    Dll2Lib 3.0

    Dll2Lib 3.0 Welcome to DLL to Lib. DLL to Lib is a magical tool which can convert a DLL file into its equivalent static library file so that you can distribute your applications without the DLLs.

    dll文件转换为lib

    在给定的文件列表中,`mspdb120.dll`通常与Visual Studio的C++编译器相关,可能是调试库的一部分;`link.exe`是Visual Studio的链接器,用于构建可执行文件或库;`pexports.exe`就是上面提到的导出DLL函数的工具;`...

    通过DLL生成LIB

    最近遇到需要修改LIB名称的事,想着重新编译LIB需要编译大半天实在太耗时间了,所以自己写了个软件,只需要将DLL改个名字重新生成LIB即可,已通过测试,仅支持支持VS C/C++平台的动态链接库,自动识别X86还是X64平台...

    32位-libiconv1.15-dll-lib

    《32位libiconv1.15:DLL与LIB库的详解与应用》 libiconv是一款广泛使用的字符集转换库,它提供了一种在不同字符编码之间进行转换的方法,使得程序能够在处理多语言环境时更加灵活。在这个主题中,我们将深入探讨32...

    dll2lib dlltolib转换工具

    - **调试与分析**:转换为LIB有助于在没有源代码的情况下理解或调试DLL中的函数。 描述中提到“还不错,挺好用的”,这表明该工具在实际使用中表现良好,易于操作,能够有效地完成DLL到LIB的转换。 使用`dll2lib....

    windows下curl+openssl+zlib 32位与64位dll与lib库及头文件

    libcurl-vc-x64-release-dll-zlib-dll-ipv6-sspi-schannel.zip zlib_x64.zip libcurl-vc-x86-release-dll-zlib-dll-ipv6-sspi-schannel.zip zlib_x86.zip ssl_x64.zip 可解压出curl openssl zlib的windows 32位及64...

Global site tag (gtag.js) - Google Analytics