• Qt 调用第三方库


    跨编译器的动态库

    今天想用Qt去调用静态库,碰巧这个库又是用Vs生成的,于是乎...

    使用Qt生成一个静态库,并使用Qt程序去调用,程序正常编译运行。但使用VS生成静态库,再使用Qt程序去调用,程序不能编译,错误File format not recognized (无法识别文件格式)。然而使用Vs生成动态库,再使用Qt去调用,程序就能够正确编译和运行。其中Qt默认使用MinGw编译器。

    那么是怎么回事呢?

    静态库是编译未链接的产物,当编译可执行程序时会去链接静态库中的函数,由于使用了不同的编译器编译,因此会导致文件格式无法识别。

    而动态库是已被编译和链接的资源,相比exe它只是没有入口main,即已经是一个能被机器解读的文件内容。在exe编译过程中只是去查找了外部声明,并没要把动态库的内容再次编译进去,因此能够编译通过。在exe运行时会把库内容拷贝到程序中,尽管动态库和可执行文件是两个不同的编译器,但是它们最终都是被翻译成了机器语言,因此程序可以调用库中函数运行。

    使用动态库

    在.pro文件中添加以下语句,指定动态库的导入库, 并在程序运行时把动态库拷贝到程序所在路径。

    LIBS     += $$PWD/lib/myfun.lib
    

    使用静态库

    在.pro文件中直接指定静态库

    LIBS     += $$PWD/lib/libmyfun.a
    
  • 相关阅读:
    固定资产取得流程
    ABAP Debug
    记录下XPO生成的SQL语句
    XPO Classes Comparison
    XPO to Database Connectivity: Mastering Fork Etiquett
    使用XPO连接高于5.2.5.0版本的MySQL
    XPO:Session管理与缓存测试篇
    XPO:Session管理与缓存机制篇
    封了一个XPO初始化类
    如何在XPO中为非主键字段获取Int型自增量
  • 原文地址:https://www.cnblogs.com/llil/p/13492606.html
Copyright © 2020-2023  润新知