SqlLite的VC工程中DLL是如何制作的?

wzd268 2007-06-07 12:07:57
不知道有没有人用过SqlLite,源代码添加到VC工程中可以编译成一个DLL,使用时只需要把SqlLite.h文件包含进来就可以直接使用其中的函数。

而普通的DLL导出函数则需要通过LoadLibrary、GetProcAddress才能使用。

SqlLite的DLL是怎么做的呢?
...全文
613 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzd268 2007-06-08
  • 打赏
  • 举报
回复
(1)lib是编译时需要的,dll是运行时需要的。
如果要完成源代码的编译,有lib就够了。
如果也使动态连接的程序运行起来,有dll就够了。
在开发和调试阶段,当然最好都有。
(2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。
(3)在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,DLL和.LIB文件必须随应用程序一起发行,否则应用程序将会产生错误。
eduyu 2007-06-07
  • 打赏
  • 举报
回复
首先,有可能是静态链接库,.lib结尾。

如果是dll,那么,windows平台dll可以有两种方式来使用,一种是Run-Time Dynamic Linking,也就是你说的那几个函数,另一种是Load-Time Dynamic Linking,link会吧dll的信息写到你的exe文件中去,这种方式需要dll的制作者制作一个倒入库(import library)也是.lib结尾。
tabris17 2007-06-07
  • 打赏
  • 举报
回复
它有个lib文件,还有个头文件

这样就可以了
菜牛 2007-06-07
  • 打赏
  • 举报
回复
普通的DLL导出函数则需要通过LoadLibrary、GetProcAddress才能使用

==============
你一直这么用的?Windows API DLL也是这么用的?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧