QtCreator工程依赖第三方动态库(.so)编译报undefined的问题解决方法。

问题描述:

代码工程中应用App1依赖Lib1编的动态库(.so),Lib1编译依赖第三方动态库SharedLibB.so,在编译整个工程编译时,报:xx.so,not found(try using -rpath or -rpath-link)

undefined refrence to xxxxxFunc1    (注意:为SharedLibB.so中的防范)

undefined refrence to xxxxxFunc1    (注意:为SharedLibB.so中的防范)

...

解决方案:

1、确保工程的配置文件中(QT为xx.pro)配置好lib依赖关系和路径,SharedLibB.so相关的库和头文件已放到依赖路径下。

2、Lib1中添加依赖配置,App1的配置文件(QT为xx.pro)中除了说明Lib1的依赖关系之外,还要添加SharedLibB.so的依赖关系和路径。

 

说明:

其中第2点需要注意,QtCreator和VS编译的配置说明依赖关系不一致,这也是我为什么出现这个问题的原因。

VS中,App1依赖Lib1,Lib1依赖SharedLibB,编译时只需要Lib1配置SharedLibB编译关系,App1配置Lib1编译关系,即可编译通过,特别时windows应用(lib和dll)。运行时将动态库(.so或者dll)放到运行路径即可。

QtCreator中,动态库编译关系,App1依赖Lib1,Lib1依赖SharedLibB,编译时需要Lib1配置SharedLibB编译关系,App1配置Lib1和SharedLibB编译关系,才可编译通过。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值