Qt Creator调用C语言编译的.So动态库

本文讲述了在Qt Creator项目中如何成功调用C语言编译的动态库libS8.so。初始遇到QLibrary加载失败的问题,通过在.cpp文件中加入`extern "C"`关键字解决函数未定义的错误。进一步优化,发现可以在动态库的头文件s8.h中直接添加`extern "C"`,或者在.pro文件中指定库路径来简化调用过程。
摘要由CSDN通过智能技术生成

    帮别人做个项目,有个传感器必须用到卖家提供的动态库。动态库是libS8.so,头文件是s8.h。

    刚开始做的时候,使用QLibrary进行加载这个动态库,发现始终加载不到,带着郁闷去问了卖家~结果他们说搞这个产品的工程师离职了,这实在太坑了。

    这时候的错误是这样的:我已经在.pro文件中添加了库的地址,以及在需要用到库文件的那个头文件当中引用了"s8.h"。这时候说,使用的那个库文件中的函数并未定义。

    问题是这样的:

undefined reference to `function(int)'

    没办法,我只能自食其力了,上度娘找找~资料倒是挺多的,在Qt Creator中调用C语言编译的动态库文件却很少。好歹找到了个方法,说是必须在.cpp中添加extern "C"。

    我自然是照着这个做了,我在需要引用动态库的.cpp文件中加入extern "C" int function(int);结果报了一个错误:

ms.h:29: error: previous declaration of 'int function(int)' with 'C++' linkage
main.cpp:24: error: conflicts with new declaration with 'C' linkage
    这个错误的意思是,你已经引用了头文件了,在.cpp中extern后就重复引用了。因此,解决办法是将引用的头文
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值