首页>源码>c++语言>StaticDynamicLibraryStudy

StaticDynamicLibraryStudy

声明:资源链接索引至第三方,平台不作任何存储,仅提供信息检索服务,若有版权问题,请https://help.coders100.com提交工单反馈
静态库和动态库是C语言中常见的两种编译链接方式。

- 静态库:在编译时将库文件(.a或.lib)与可执行文件(.exe)一起打包,运行时直接加载库文件,不依赖外部函数。这种方式的优点是编译速度快,但缺点是如果库中的函数被修改,需要重新编译可执行文件。

- 动态库:在编译时不将库文件与可执行文件打包,而是在运行时通过dlopen()函数加载库文件。这种方式的优点是灵活性高,可以方便地添加、删除库中的函数,但缺点是编译速度慢,且库文件过大可能导致程序运行缓慢。

学习Demo:

1. 创建一个名为`main.c`的文件,包含以下代码:

#include 
#include "my_library.h" // 假设有一个名为my_library的动态库

int main() {
printf("Hello, World!
");
return 0;
}


2. 创建一个名为`my_library.h`的文件,声明一个名为`my_function`的函数:

extern "C" {
void my_function();
}


3. 创建一个名为`my_library.cpp`的文件,实现`my_function`函数:

#include "my_library.h"

void my_function() {
printf("This is a dynamic library function.
");
}


4. 创建一个名为`makefile`的文件,指定编译选项:

CC = gcc
CFLAGS = -Wall -g
LDFLAGS = -L/path/to/your/library -lmy_library

all: main

main: main.o my_library.o
$(CC) $(CFLAGS) -o main main.o my_library.o $(LDFLAGS)

main.o: main.c my_library.h
$(CC) $(CFLAGS) -c main.c

clean:
rm -f main main.o my_library.o


5. 使用以下命令编译并运行程序:

make all
./main
电信网络下载

访问申明(访问视为同意此申明)

1.在网站平台的任何操作视为已阅读和同意网站底部的版权及免责申明
2.部分网络用户分享TXT文件内容为网盘地址有可能会失效(此类多为视频教程,如发生失效情况【联系客服】自助退回)
3.请多看看评论和内容介绍大数据情况下资源并不能保证每一条都是完美的资源
4.是否访问均为用户自主行为,本站只提供搜索服务不提供技术支持,感谢您的支持
意见反馈 联系客服 返回顶部

登录注册找回密码

捐赠账单

可选择微信或支付宝捐赠

*请依据自身情况量力选择捐赠类型并点击“确认”按钮

*依据中国相关法规,捐赠金额平台将不予提供发票

*感谢您的捐赠,我们竭诚为您提供更好的搜索服务

*本着平台非营利,请自主选择捐赠或分享资源获得积分

*您的捐赠仅代表平台的搜索服务费,如有疑问请通过联系客服反馈

*推荐用chrome浏览器访问本站,禁用360/Edge浏览器

*请务必认真阅读上诉声明,捐赠视为理解同意上诉声明

账号剩余积分: 0
啥都没有哦