讨论一下 : 动态连接库DLL 的两种引用方式……

wjyasd 2001-11-14 08:23:03
显式调用和隐式调用:

对于后者的设计是如何实现的呢? a.dll and a.lib 是如何通过a.lib定位到a.dll中的函数入口的呢?

畅所欲言呀!
...全文
210 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjyasd 2001-12-30
  • 打赏
  • 举报
回复
呵呵……
wjyasd 2001-11-15
  • 打赏
  • 举报
回复
谢谢 turongguo 的解释!

现在我的问题不是讨论 *.lib和*.dll 在WINDOWS 平台内的使用问题。而是它的实现的方法。
主要是如何通过LIB文件定位到DLL文件中函数的入口地址!
我要将标准C的库函数以DLL的形式移植到另一个平台上。
因为涉及到跨平台编译的问题。所以嘛,请大家想想办法。
turongguo 2001-11-15
  • 打赏
  • 举报
回复
在于一个*.lib文件。在编译动态链接库时,VC++会为动态链接库创建一个引入
库(IMPORT LIB),即*.lib。库文件中只包含一些指向外部DLL库的函数索引指针,而
不是真正的代码,用于解析DLL的加载地址,并定义动态链接库和用于声明的头文件
的完全路径名。然后为引入库定义一个头文件,用来声明DLL中的函数。开发人员在引用时,
要配置如下:
A.在Project|Setting中的Link标签页的Object/library Modules 中加入*.lib
B.在Tools|Options中的Directories 标签页中的 Show directories for:下面的
Include files 中增加Myclass.h的路径;Lib files中增加*.lib 和*.dll路径。
这是一种常用的方法。实际上,应用程序就是通过这种方式来访问Windows 的API函数。
WINDOWS为其内核动态链接库生成引入库并提供了头文件。应用程序在编译时将引入
库的信息带入可执行文件中,运行时通过引入库信息访问API函数。
wjyasd 2001-11-15
  • 打赏
  • 举报
回复
不好意思,我没有表达清楚。
Windows平台和VC 的开发环境已经提供了这个功能,但是现在要在另一个平台(打个比方是LINUX)下进行这个工作,应该如何考虑?以及实现的方式是怎么样的呢?
wuchuncai 2001-11-15
  • 打赏
  • 举报
回复
反正在生成一个dll的时候vc会产生一个对应的lib

16,472

社区成员

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

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

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