c++加载外部库文件探究

本文详细介绍了C++中加载外部库文件的三种方式:#import导入DLL(适用于COM组件)、#pragma comment静态加载库和LoadLibrary动态加载。通过隐式和显式链接,探讨了DLL的加载原理及API函数的使用,包括LoadLibrary、GetProcAddress和FreeLibrary。此外,还讨论了Windows系统中查找DLL文件的路径顺序,并提供了隐式和显式链接的代码示例。
摘要由CSDN通过智能技术生成

首先介绍:用#import导入dll和用#pragma comment导入lib还有在程序中LoadLibrary加载dll有什么区别

(1)、#import 导入的dll是com组建的dll,主要用来解析com组建内部结构,便与c++识别调用,

(2)、#pragma comment 是静态加载库

(3)、 LoadLibrary 动态加载动态库

Windows提供了两种将DLL映像到进程地址空间的方法:

调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同。

1. 隐式的加载时链接

这种方法需要DLL工程经编译产生的LIB文件,此文件中包含了DLL允许应用程序调用的所有函数的列表,当链接器发现应用程序调用了LIB文件列出的某个函数,就会在应用程序的可执行文件的文件映像中加入一些信息,这些信息指出了包含这个函数的DLL文件的名字。当这个应用程序运行时,也就是它的可执行文件被操作系统产生映像文件时,系统会查看这个映像文件中关于DLL的信息,然后将这个DLL文件映像到进程的地址空间。

系统通过DLL文件的名称,试图加载这个文件到进程地址空间时,它寻找DLL 文件的路径按照先后顺序如下:

·程序运行时的目录,即可执行文件所在的目录;

·当前程序工作目录

·系统目录:对于Windows95/98来说,可以调用GetSystemDirectory函数来得到,对于WindowsNT/2000 来说,指的是32位Windows的系统目录,也可以调用GetSystemDirectory函数来得到,得到的值为SYSTEM32。

·Windows目录

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值