Qtの基礎 - ライブラリ

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2021年1月31日 (日) 18:51時点におけるWiki (トーク | 投稿記録)による版 (→‎動的ライブラリの作成)
ナビゲーションに移動 検索に移動

概要

Qt Creatorにおいて、静的ライブラリおよび動的ライブラリを作成して、他のQtプロジェクトにリンクする手順を記載する。


静的ライブラリ

静的ライブラリの作成

  1. QT Creatorのメイン画面から、[ファイル]メニューバー - [ファイル / プロジェクトの新規作成]を選択する。
  2. [新しいファイルまたはプロジェクト]画面左にある[ライブラリ]から[C++ Library]を選択する。
  3. [C++ Library]画面が開くので、以下の項目を設定する。
    • プロジェクト名やビルドシステム等を任意のものに設定する。
    • [プロジェクトの詳細定義]では、以下の手順で設定する。
      [Type:]は、[Shared Library]
      [Qt module:]は、Qtクラスを使用しない場合は[None]、Qtクラスを使用する場合は[Qt Core]、
      画面の作成が伴う場合は[Qt Gui]、ウィジェットの作成が伴う場合は[Widget]を選択する。
      [クラス名:]、[ソースファイル名:]、[ヘッダ名:]は任意のものに設定する。
  4. [Translation File]や[キットの選択]は任意のものに設定する。


プロジェクトをビルドして、静的ライブラリを生成する。
生成されたライブラリは、Windowsの場合は.lib拡張子、Linuxの場合は.a拡張子である。

静的ライブラリのリンク

静的ライブラリを他のQtプロジェクトにリンクするには、以下の手順を行う。

  1. 他のQtプロジェクトにおいて、Qt Creatorのメイン画面にある[プロジェクト]ペインからプロジェクト名を右クリックして、
    [ライブラリを追加]を選択する。
  2. [ライブラリの追加]画面が開くので、以下の項目を設定する。
    • [ライブラリの種類]では、[外部ライブラリ]を選択する。
    • [外部ライブラリ]では、ライブラリのリンク方法とライブラリのパスを選択する。
      [ライブラリファイル:]は、ライブラリが存在するパスを入力する。
      [リンク方法]は、[スタティック]を選択する。
  3. Qtプロジェクトをビルドすることにより、静的ライブラリをリンクすることができる。



動的ライブラリ

動的ライブラリの作成

  1. QT Creatorのメイン画面から、[ファイル]メニューバー - [ファイル / プロジェクトの新規作成]を選択する。
  2. [新しいファイルまたはプロジェクト]画面左にある[ライブラリ]から[C++ Library]を選択する。
  3. [C++ Library]画面が開くので、以下の項目を設定する。
    • プロジェクト名やビルドシステム等を任意のものに設定する。
    • [プロジェクトの詳細定義]では、以下の手順で設定する。
      [Type:]は、[Shared Library]
      [Qt module:]は、Qtクラスを使用しない場合は[None]、Qtクラスを使用する場合は[Qt Core]、
      画面の作成が伴う場合は[Qt Gui]、ウィジェットの作成が伴う場合は[Widget]を選択する。
      [クラス名:]、[ソースファイル名:]、[ヘッダ名:]は任意のものに設定する。
    • [Translation File]や[キットの選択]は任意のものに設定する。


以下の例では、動的ライブラリとしてダイアログ(QDialogの派生クラス)を作成している。

 #ifndef LIBDIALOG_GLOBAL_H
 #define LIBDIALOG_GLOBAL_H
 
 #include <QtCore/qglobal.h>
 
 #ifdef Q_OS_WIN   // Windows
    #if defined(LIBDIALOG_LIBRARY)
       #define LIBDIALOG_EXPORT __declspec(dllexport)
    #else
       #define LIBDIALOG_EXPORT
    #endif
 #elif Q_OS_LINUX  // Linux
    #if defined(LIBDIALOG_LIBRARY)
       #define LIBDIALOG_EXPORT Q_DECL_EXPORT
    #else
       #define LIBDIALOG_EXPORT Q_DECL_IMPORT
    #endif
 #endif
 
 #endif // LIBDIALOG_GLOBAL_H


 // LibDialog.h
 
 #ifndef LIBDIALOG_H
 #define LIBDIALOG_H
 
 #include "LibDialog_global.h"
 #include <QDialog>
 
 class LIBDIALOG_EXPORT LibDialog : public QDialog
 {
 public:
    LibDialog();
 };
 
 #endif // LIBDIALOG_H


 // LibDialog.cpp
 
 #include "LibDialog.h"
 
 LibDialog::LibDialog()
 {
    setWindowTitle("Show dialog");
 }


動的ライブラリのプロジェクトをビルドして、debugディレクトリまたはreleaseディレクトリにライブラリが生成される。

※注意
Windowsの場合、DLLファイルとaファイルが生成されるため、
aファイルの.a拡張子を.lib拡張子に変更する必要がある。


動的ライブラリのリンク

動的ライブラリを他のQtプロジェクトにリンクするには、以下の手順を行う。

  1. 他のQtプロジェクトにおいて、Qt Creatorのメイン画面にある[プロジェクト]ペインから、
    プロジェクト名を右クリックして、[ライブラリを追加]を選択する。
  2. [ライブラリの追加]画面が開くので、以下の項目を設定する。
    • [ライブラリの種類]では、[外部ライブラリ]を選択する。
    • [外部ライブラリ]では、ライブラリのリンク方法とライブラリのパスを選択する。
      [ライブラリファイル:]は、動的ライブラリが存在するパスを入力する。(動的ライブラリの.libファイルまたは.aファイルを指定)
      [リンク方法]は、[ダイナミック]を選択する。
  3. これにより、動的ライブラリとして、Qtプロジェクトにリンクすることができる。
    Qtプロジェクトのビルドは不要である。


次に、動的ライブラリの機能を使用するため、動的ライブラリのヘッダファイルをインクルードする。

  1. 動的ライブラリの機能を使用するため、Qt Creatorのメイン画面からにある[プロジェクト]ペインから、
    プロジェクト名を右クリックして、[既存のファイルの追加...]を選択する。
  2. ファイル選択ダイアログから、動的ライブラリのヘッダファイルを追加する。
    ヘッダファイルをインクルードすることにより、動的ライブラリの機能が使用できるようになる。
  3. ただし、動的ライブラリはQT Creatorから独立して実行されるため、実行ファイルと同じディレクトリに動的ライブラリを配置する必要がある。
 #include <QCoreApplication>
 #include "LibDialog.h"
 
 int main(int argc, char * argv[])
 {
    QCoreApplication a(argc, argv);
 	
    LibDialog dialog;
    dialog.show();
 	
    return a.exec();
 }