eclipse封装动态库和链接动态库

本文详细介绍了在Linux环境下使用C++创建动态链接库(.so文件)的步骤,包括创建SharedLibrary工程、实现功能代码、配置链接参数等,并指导如何在其他工程中调用此动态库,解决链接库路径问题。

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

原贴地址:https://blog.youkuaiyun.com/qq_34647831/article/details/82957707

  1. 封装动态库

(1)创建Shared Library 工程

创建工程new->project->C Project->Shared Library->Empty Project,之后选择Linux GCC ,输入工程名MeLib,最后点击Finish.(此处Shared Library很好理解,创建的动态链接库目的就是被其他程序所调用,因此创建为共享库)如图:

https://i-blog.csdnimg.cn/blog_migrate/bd1748062c1d5eaebdf97930f6d86b14.png

(2)工程实现

创建相应的功能文件右键工程new->Source folder, 输入文件名此处命名为src,添加要编写的.c文件,右键src,new->Source file,本文中此处命名为test.c,实现代码如下:(此处就是你动态库.so要实现的功能)

(3)工程配置

配置链接参数右键工程,Propertise->C/C++ Build->Settings->GCC C Compiler->Miscellaneous -fPIC勾选上如下:

https://i-blog.csdnimg.cn/blog_migrate/df1f7ee04cc9f261779c471ca4673f17.png

-fPIC 作用于编译阶段,告诉编译器产生与位置无关代码。则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。

(4)工程编译

点击Build Project 编译成功之后在Debug目录里面生成了libMeLib.so文件,如下:

https://i-blog.csdnimg.cn/blog_migrate/e62fd3f224a21f6776d0f9a49431c2c8.png

2.链接动态库

(1)创建工程

创建需要调用动态链接库的工程,new->project->C Project->Executable->Empty Project,输入工程名test,最后点击Finish

创建相应的功能文件右键工程new->Source folder, 输入文件名此处命名为src.首先添加我们调用的动态链接库的API接口文件testh.h这个头文件主要放动态链接库中封装的函数的声明,我们要用这个动态库时就需要将相应的API头文件加载到工程中,testh.h文件实现如下:

添加要编写的.c文件,右键srcnew->Source file,本文中此处命名为main.c,实现代码如下:

 

(2)添加动态链接库

添加动态链接库的路径,右键工程 Propertise->C/C++ Build->Settings->GCC C Linker->Libraries注意是MeLib 不是libMeLib

https://i-blog.csdnimg.cn/blog_migrate/d493a41c6b2a037465543a17b707a607.png

 

(3)修改链接库路径

点击运行,会出现以下错误:error while loading shared libraries: libShared.so: cannot open shared object file: No such file or directory ,因为系统无法从默认位置找到动态链接库文件。修改系统默认搜索链接库的路径,程序即可顺利执行,

方法 (在终端下: sudo ldconfig <so文件的目录>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值