Qt库文件生成与链接问题
来源:互联网 发布:c语言 二叉树递归算法 编辑:程序博客网 时间:2024/05/17 22:37
之前一直在windows下做项目,现在要将项目移植到Linux下,发现了很多问题,在此描述一些其中关于动态库静态库问题。
在windows下,.pro文件中配置 TEMPLATE= lib,编译时即可生成.lib和.dll两个库文件。这里假设有A、B、C三个模块,A依赖与B,B依赖于C,所以我们在编译的时候就要先生成C模块库的库文件,设为Cxxx.lib和Cxxx.dll两个文件,在B模块中链接C库时,在.pro文件中加入链接配置即可:
LIBS += -Lpath -lCxxx #path是库文件Cxxx.lib所在的路径,不是.dll路径
编译B模块即可生成相应库文件Bxxx.lib 和 Bxxx.dll
在模块A的.pro文件中做类似配置LIBS += -Lpath -lBxxx编译即可生成A模块的库文件Axxx.lib和 Axxx.dll在可执行项目模块App中,如果只依赖于模块A,配置为LIBS += -Lpath -lAxxx 即可,如果还依赖于别的库文件,在后面添加 -lxxx编译完成,生成的App.exe文件,只要和.dll拷贝到同一个目录下,即可运行。对于以上windows下的配置,在Linux下却是不行的。首先,如果.pro文件中配置 TEMPLATE = lib, 在Linux中生成的只有共享库.so,也就是所谓的动态库文件。可以看到动态库文件有多个.so .so.1 .so.1.0之类。如果只想要一个.so文件,.pro中可加入 CONFIG += plugin若想生成静态库文件,需要添加 CONFIG += staticlib。同样是A、B、C三个模块,依赖关系和上面一样,Linux下只能用动态库链接,使用静态库时总提示接口函数未定义。
使用动态库时注意,在编译A、B、C模块时,可以不执行链接操作,即无需添加 LIBS += -Lpath -lxxx然而在可执行项目App模块中,虽然我只依赖于库A,如果只链接库A,同样会提示B库中接口函数未定义,必须将三个库都链接上。LIBS += -Lpath -lAxxx -lBxxx -lCxxx
0 0
- Qt库文件生成与链接问题
- QT生成动态链接库.so文件
- Qt生成动/静态链接库的*.pro文件设置
- 链接库文件的生成与使用
- qt 生成库文件
- QT调用VC 动态链接库 解决QT打开或保存文件时闪退的问题
- qt的动态链接库生成、使用,还夹带一些pro文件的使用。
- Qt JSON 文件生成与解析
- Qt slot 链接问题
- Qt遇到链接问题
- 静态链接库.a文件生成方法
- 如何让qmake生成的Makefie不链接Qt库
- Qt调用VC++生成的动态链接库
- Qt动态链接库的生成和应用
- Qt发布项目自动导入动态链接库生成exe
- 库文件的链接问题
- 【转】gcc动态链接库*.so文件的生成与使用方法
- 【转】gcc动态链接库*.so文件的生成与使用方法
- android属性动画--Evaluator
- JSP中文乱码问题(整理自传智播客)
- 密码学:SHA1加密算法详解
- C#类的继承
- PostgreSQL安装详细步骤(windows)
- Qt库文件生成与链接问题
- 半平面交
- android属性动画--多属性动画
- 数据库系统原理总结
- nyoj 88
- java内存分配和访问控制
- 如何使用FTP上传文件
- Matlab 处理avi视频文件为单帧任意大小图片
- Java语言中null与""的区别