c++项目结构学习

本文介绍了如何将多个源文件打包成动态链接库,并与主函数文件链接生成可执行程序。通过示例展示了创建动态库(如libsoTest.so)的步骤,包括使用g++编译器的-fPIC和-shared选项,以及链接阶段使用-L和-l选项。最后提到了运行时可能出现的动态库找不到的问题及其临时解决方案。

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

动态链接库

功能

写项目的时候需要头文件来声明函数,源文件来写函数具体实现,然后还得写一个main函数来使用前面声明的函数。而动态库则可以将源文件都打包成一个库,在链接的时候和main文件链接在一起,满足需求。

例子

头文件:so_test.h

//so_test.h:
#include<iostream>
void test_a();
void test_b();
void test_c();

三个源文件:test_a.cpp,test_b.cpp,test_c.cpp

//test_a.cpp:
#include "so_test.h"
#include<iostream>
using namespace std;

void test_a()
{
  cout<<"this is in test_a..."<<endl;
}

//test_b.cpp
#include "so_test.h"
#include<iostream>
using namespace std;

void test_b()
{
  cout<<"this is in test_b..."<<endl;
}

//test_c.cpp
#include "so_test.h"
#include<iostream>
using namespace std;

void test_c()
{
  cout<<"this is in test_c..."<<endl;
}

主函数文件:test.cpp

#include"so_test.h"

int main()
{
    test_a();
    test_b();
    test_c();
    return 0;
}

目的:将三个源文件打包成动态库,并与主函数文件链接生成可执行文件。

实现

在这里插入图片描述

g++ test_a.cpp test_b.cpp test_c.cpp -fPIC -shared -o libsotest.so
//生成动态库

使用-fPIC能让一个库给多个主函数使用,而不是通过拷贝复制给其他函数使用。
使用-shared表示-o是生成动态库而不是可执行文件

g++ test.cpp -L. -lsotest -o test
//动态库与主函数链接

使用-L来指明动态库文件所在路径,-l指明动态库文件名(去掉lib和.so)-o生成可执行文件test。
在这里插入图片描述
然后运行./test
在这里插入图片描述
这里有可能会遇到找不到动态库文件的报错(程序运行时),相关解决办法网上很多,我采用临时解决办法

export LD_LIBRARY_PATH=/home/aotuman/c++_learning/dong_tai_ku_learning2

之后就可以运行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值