QT添加外部库使用方法

1.编译库

        明确一点,不同编译器编译出来的库不一定可以互相使用的,所以尽量你的库文件是使用同一个编译器编译出来。

        首先找到你的qt所使用的编译器是哪个,一般会在QT的安装目录下的tools文件夹下,比如 D:\QT\Tools\mingw492_32,然后打开命令窗(win+r 输入,cmd,回车 ),进入到这个文件夹的bin目录里面。如下图

        因为QT是用c++编译的,所以我们需要使用g++的编译命令,而不能用gcc。

        将要编译的源文件放到编译器的根目录下(mingw492_32

         

        然后在命令窗下输入以下命令

g++.exe -shared -o ../hello.dll ../hello.c

         然后目录下就会生成库文件了。

        当然也有不顺利的情况:

        1.如果是代码问题就自己改了。因为有的可以在gcc下编译成功,但是在g++下是不允许的,所以要按情况修改。

        2. 报错  g++.exe: error: CreateProcess: No such file or directory ,这个大概率跟minGW有相关问题,可能环境变量上有其他的编译器,与这个g++本身冲突了。这时候上面的g++.exe的命令要用绝对路径

D:\QT\Tools\mingw492_32\g++.exe -shared -o ../hello.dll ../hello.c

       

2.往工程中添加库

        这个网上有很多方法,这里就简单说下我的

        将上述的库文件头文件移到工程目录下的lib文件夹(没有就新建文件夹)

        在pro文件中添加

INCLUDEPATH += $$PWD/lib
LIBS += $$PWD/lib/hello.dll

        工程中把头文件添加进去

         这样基本就完成了。这种方法可以添加动态库或者静态库都没问题

3.使用

        在工程中#include "lib/hello.h",然后调用函数hello(22); 然后直接保存编译,运行查看结果

        注意,如果在函数hello中使用printf ,它运行函数后是不会马上输出显示的,得程序结束后才会显示,可能是qt机制问题吧。

        可能会有的报错或异常:

        1.报错  error: undefined reference to `hello(int)'

                这个有可能是链接库失败或者库中没有这个函数,具体可以查看底下状态栏下的编译输出。如果是用gcc编译的库有可能就会链接失败。

        2.报错  xxx\hello.dll:-1: error: file not recognized: File format not recognized

                     collect2.exe:-1: error: error: ld returned 1 exit status

                这个明确就写着链接失败,动态库不识别。基本问题就是qt使用的编译器跟编译出来的库使用的编译器不一致导致的。可能大家都是用minGW的编译器,但是版本不同它就是不可以,我也没脾气。

         3.程序编译成功,但是运行后异常结束

             这个找了很久,才发现是运行的时候没找到库导致异常,如果是debug模式下运行,那么把库文件放到debug文件夹下根目录就可以了

                 之后程序打包也记得将库放到目录下。

        

         

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt项目中添加外部,一般分为两个步骤:首先是准备外部文件,然后是在Qt项目中进行配置。 首先,在准备外部文件方面,需要确保已经获取到所需的文件。这些文件可以是编译好的二进制文件,也可以是源码文件。如果是二进制文件,一般是以.so(在Linux下)或.dll(在Windows下)为后缀的文件;如果是源码文件,则需要进行编译。确保已经获取到外部文件后,将这些文件保存到指定的文件夹下。 然后,在Qt项目中进行配置。打开Qt项目的.pro文件,找到LIBS变量,并添加外部的配置信息。对于二进制文件,可以使用以下格式来配置: LIBS += -L<文件所在目录> -l<文件名称(不含后缀)> 例如,如果文件libexample.so在/home/user/example目录下,则配置为: LIBS += -L/home/user/example -lexample 如果是源码文件,则需要先进行编译生成二进制文件,然后按照上述格式配置。 配置完成后,重新编译和构建Qt项目即可。在这个过程中,Qt编译器会根据配置的信息去指定的文件夹下寻找并链接外部,使得可以在Qt项目中使用外部的功能。 需要注意的是,配置外部时,要确保Qt项目所用的Qt版本和外部的兼容性,以及外部是否适用于当前平台。如果有依赖关系,还需要确保依赖的其他已经正确配置。同时,如果外部是动态链接,还需要将文件拷贝到运行时的路径下,或者配置系统的环境变量,以保证程序在运行时可以找到所需要的文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值