「Qtの基礎 - ライブラリ」の版間の差分

ナビゲーションに移動 検索に移動
134行目: 134行目:
==== 動的ライブラリの明示的リンク ====
==== 動的ライブラリの明示的リンク ====
Qtには、動的ライブラリの関数を簡単に使用するために、QLibraryクラスが用意されている。<br>
Qtには、動的ライブラリの関数を簡単に使用するために、QLibraryクラスが用意されている。<br>
<br>
明示的リンクを使用して、動的ライブラリの関数を呼び出す手順は、以下の通りである。<br>
# 動的ライブラリの関数において、C言語のグローバル関数として定義する。
# 動的ライブラリを生成する。
# 動的ライブラリを呼び出す側の実行ファイルと同じディレクトリに、動的ライブラリを配置する。
# QLibraryクラスを使用して、動的ライブラリの関数を呼び出す。
<br>
<br>
以下の構成を持つ2つのプロジェクトを作成したとする。<br>
以下の構成を持つ2つのプロジェクトを作成したとする。<br>
* プロジェクト構成
* プロジェクト構成
*: 動的ライブラリ
** 動的ライブラリ
*: Utils
**: Utils
* 実行ファイル
** 実行ファイル
*: Moc
**: Moc
<br>
<br>
まず、Utilsプロジェクトにおいて、関数のみを定義したUtils.cppファイルを作成する。<br>
まず、Utilsプロジェクトにおいて、関数のみを定義したUtils.cppファイルを作成する。<br>
<syntaxhighlight lang="c++">
// Utils_global.h
#ifndef UTILS_GLOBAL_H
#define UTILS_GLOBAL_H
#include <QtCore/qglobal.h>
#ifdef Q_OS_WIN  // Windows
    #if defined(UTILS_LIBRARY)
      #define UTILS_EXPORT __declspec(dllexport)
    #else
      #define UTILS_EXPORT
    #endif
#elif Q_OS_LINUX  // Linux
    #if defined(UTILS_LIBRARY)
      #define UTILS_EXPORT Q_DECL_EXPORT
    #else
      #define UTILS_EXPORT Q_DECL_IMPORT
    #endif
#endif
#endif // LIBDIALOG_GLOBAL_H
</syntaxhighlight>
<br>
  <syntaxhighlight lang="c++">
  <syntaxhighlight lang="c++">
  // Utils.cpp
  // Utils.cpp
149行目: 180行目:
  #include <iostream>
  #include <iostream>
   
   
  #ifdef Q_OS_WIN
  //#ifdef Q_OS_WIN
  #define MY_EXPORT __declspec(dllexport)
  //  #define UTILS_EXPORT __declspec(dllexport)
  #else
  //#else
  #define MY_EXPORT
  //  #define UTILS_EXPORT
  #endif
  //#endif
   
   
  extern "C" MY_EXPORT void SampleHello(int count)
  extern "C" UTILS_EXPORT void SampleHello(int count)
  {
  {
     while(--count)
     while(--count)

案内メニュー