DLLファイルの作り方
動的なライブラリ(DLL)を作り、別のアプリケーションからライブラリを使う方法を紹介します。
DLLファイルを作る
初めにライブラリをプロジェクトとして作成します。
QT Creatorの「ファイル」から「ファイル・プロジェクトの新規作成」をクリックしてその中から次のように「ライブラリ」から「C++ライブラリ」を選択して次に進みます。
次にプロジェクト選択ダイアログが出てくるのでタイプに「共有ライブラリ」を選択し、その後名前とパスを入力して「次へ」進みます。
その後はダイアログの指示に従ってプロジェクトを作ってください。
出来上がったプロジェクトは普通のGUIプロジェクトのようにソースファイルとヘッダファイルが作られます。
ここではダイアログをライブラリの部品として作りました。
ダイアログのヘッダファイルはQDialogを継承して作りました。
#ifndef LIBDIALOG_H #define LIBDIALOG_H #include "libdialog_global.h" #include <QDialog> class LIBDIALOGSHARED_EXPORT LibDialog : public QDialog { public: LibDialog(); }; #endif // LIBDIALOG_H
ダイアログも普通の定義します。
#include "LibDialog.h" LibDialog::LibDialog() { setWindowTitle("Show dialog"); }
ライブラリの定義がすんだらプロジェクトをビルドすればdebugまたはreleaseディレクトリにライブラリファイル(DLL)が出来上がります。
DLLファイルとaファイルが作成されていますが、aファイルの拡張子をlibファイルと拡張子を変更します。
ライブラリの使用
次に作成したライブラリを使ってダイアログを表示してみます。
まず適当にGUIアプリケーションを作ります。
そしてそのプロジェクト上で左クリックして「ライブラリの追加」をクリックします。
ここではリンクするライブラリはプロジェクト内にないので種類として「外部ライブラリ」を選択します。
するとライブラリの選択画面が出てくるのでそこでライブラリの形式としてダイナミックを選択して生成されたlibファイルを指定します。
これでライブラリがDLLファイルとしてプロジェクトにリンクされるようになります。
ライブラリの機能を使うにはライブラリのヘッダファイルをインクルードします。
ライブラリの機能を使うためにプロジェクト上の「既存のファイルの追加...」をクリックしてライブラリのヘッダファイルを追加します。
ヘッダをインクルードすればライブラリの機能がそのまま使えるようになります。
#include <QCoreApplication> #include "LibDialog.h" int main(int argc, char * argv[]) { QCoreApplication a(argc, argv); LibDialog dialog; dialog.show(); return a.exec(); }
ただし、動的リンクしているのでQT Creatorから独立して実行するにはアプリと同じディレクトリにDLLファイルを置く必要があります。