静态连接库与动态链接库

本文详细介绍了Windows编程中的静态库和动态库,包括创建与调用方法。静态库在编译时合并到目标代码中,而动态库在运行时加载。静态链接不需要DLL,动态链接则分为静态调用(需要.lib和.dll)和动态调用(使用LoadLibrary和GetProcAddress)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静态链接库(简称静态库)和动态连接库(简称动态库)在windows编程过程中经常碰到,很多人都在用,如果详细追究也没几个人能说的清楚。自己以前看过多次,每次看都不是很完整,看过之后不久也就忘记了。希望通过这次总结可以加深印象,提升对库的理解,本文章所用vs为vc6.0。

1、静态库

1.1、两种指定静态库的方法

静态库是经常使用的。两种方式指定lib库

(1)    在工程属性中设置,如下图

Ø  需要在debug和release时都添加lib库,当然也可以选择”SettingsFor”->”All Configurations”来添加lib库。

Ø  当工作区文件丢失后,添加的lib库文件名即丢失。

(2)    用#pragma预处理命令。

Ø  #pragma comment(lib, "iphlpapi.lib")

Ø  可以在文件中直观的看到用到哪些lib库

Ø  当vc工作区文件(dsw)丢失时,重建dsw文件即可编译。

Ø  不需要debug和release都添加库文件名。

1.2、创建一个静态库

像上图创建一个“Win32Static Library”,下一步,可以选择Pre-Compiled header和MFC support两项,我们暂时先不选择。新建staticlib.h和staticlib.cpp。

 

staticlib.h

 

#ifndef __STATIC_LIB_H

#define __STATIC_LIB_H

extern "C" int add(int, int);

 

#endif

 

staticlib.cpp

 

#include "staticlib.h"

int add(int a, int b)

{

return a + b;

}

在staticlib的工程属性页post-build step中添加build后的执行命令。工作路径是staticlib文件夹

copy staticlib.h  ..\libtest\staticlib.h

copy debug\staticlib.lib  ..\libtest\staticlib.lib

 

 

1.3、调用静态库

静态库不会生成dll程序。调用静态库需要两个要件:

Ø  头文件

Ø  lib库文件

创建一个libtest工程项目来调用staticlib库函数,当然最好把staticlib.h加入到工程中。在build libtest程序时,会把staticlib库中的add函数加到libtest中。

 

libtest.cpp

 

#include "staticlib.h"

 

int main(int argc, char* argv[])

{

          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值