QT 创建使用动态库

一、创建并编译库

创建项目,选择Library下的C++ Library

QT 创建使用动态库

2.选择shared library

QT 创建使用动态库

3.此时创建的项目的.pro文件如下:

QT -= gui
TEMPLATE = lib
DEFINES += Data_LIBRARY
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
library.cpp
HEADERS += \
Data_global.h \
library.h
unix {
target.path = /usr/lib
INSTALLS += target
}

创建Qt动态库的时候,会自动创建一个xx_global.h的文件,这个文件主要是为了Windows平台下的库调用时需要符号导出才能使用而准备的。一般情况下,我们也可以不要。当然了,如果你直接写在头文件中也行的。

4.可设置生成库的位置

win32:{
    !contains(QT_ARCH, i386):{
        CONFIG(release, debug|release):{
            DESTDIR = $$PWD/../lib/win/x64/release
        }
        else:CONFIG(debug, debug|release):{
            DESTDIR = $$PWD/../lib/win/x64/debug
        }
    }
    else:{
        CONFIG(release, debug|release):{
            DESTDIR = $$PWD/../lib/win/x86/release
        }
        else:CONFIG(debug, debug|release):{
            DESTDIR = $$PWD/../lib/win/x86/debug
        }
    }
}

5.构建程序即可得到.a和.dll文件

.a静态库 编译程序时使用  静态库的使用需要和头文件.h一同使用。

.dll动态库  运行程序时使用

补充:

静态库:.a为MinGw编译器编译的库     .lib为MSVC编译器编译的库

二、添加库文件

1.右击文件名称或者.pro程序,选择添加库。

QT 创建使用动态库QT 创建使用动态库

 2.选择外部库 

 QT 创建使用动态库

 3.点击浏览选择库,去掉Windows下的选项,如果只在Windows下使用,将平台下的Linux和Mac取消勾选。

QT 创建使用动态库

  4.点击完成

QT 创建使用动态库

  5.生成如下代码

QT 创建使用动态库

 

win32:{  #Windows下
     !contains(QT_ARCH, i386):{   #x64
        CONFIG(release, debug|release):{    #release
            DESTDIR = $$PWD/../bin/win/x64/release
 
            LIBS += -L$$PWD/../lib/win/x64/debug/ -lShareLib
        }
        else:CONFIG(debug, debug|release):{   #debug
            DESTDIR = $$PWD/../bin/win/x64/debug
 
            LIBS += -L$$PWD/../lib/win/x64/debug/ -lShareLib
        }
    }
    else:{   # x86
        CONFIG(release, debug|release):{   #release
            DESTDIR = $$PWD/../bin/win/x86/release
            LIBS += -L$$PWD/../lib/win/x86/release/ -lShareLib
        }
        else:CONFIG(debug, debug|release):{   #debug
            DESTDIR = $$PWD/../bin/win/x86/debug
 
            LIBS += -L$$PWD/../lib/win/x64/debug/ -lShareLib
        }
    }
}
 
 
unix:!macx{ #Linux下
    !contains(QT_ARCH, i386):{   #x64
        CONFIG(release, debug|release):{   #release
            DESTDIR = $$PWD/../bin/linux/x64/release
            LIBS += -L$$PWD/../lib/linux/x64/release/ -lShareLib
        }
        else:CONFIG(debug, debug|release):{   #debug
            DESTDIR = $$PWD/../bin/linux/x64/debug
            LIBS += -L$$PWD/../lib/linux/x64/debug/ -lShareLib
        }
    }
    else:{              # x86
        CONFIG(release, debug|release):{  #release
            DESTDIR = $$PWD/../bin/linux/x86/release
            LIBS += -L$$PWD/../lib/linux/x86/release/ -lShareLib
        }
        else:CONFIG(debug, debug|release):{  #debug
            DESTDIR = $$PWD/../bin/linux/x86/debug
            LIBS += -L$$PWD/../lib/linux/x86/debug/ -lShareLib
        }
    }
}

上一篇:C# 访问Access数据库在X64下访问失败问题解决


下一篇:关于:在 Windows Server 2003 x64 中使用 GPMC(旧作)