Mfc-libraries

提供:Dev Guides
移動先:案内検索

MFC-ライブラリ

  • ライブラリ*は、これらの関数、クラス、またはリソースがどのように作成されたか、またはどのように機能するかを知る必要なく、既に実装されたエンティティを必要とするプログラムで利用できる関数、クラス、またはその他のリソースのグループです。 ライブラリにより、プログラマーは関数、クラス、リソースなどを簡単に使用できます。 別の個人または会社によって作成され、この外部ソースが信頼性が高く効率的であると信頼しています。 ライブラリに関連するいくつかのユニークな機能は-
  • ライブラリは作成され、通常の通常のプログラムのように機能し、関数または他のリソースを使用して、他のプログラムと通信します。
  • ライブラリには、その機能を実装するために、他のプログラムが機能を完了するために必要な機能が含まれています。
  • 同時に、ライブラリは他のプログラムが必要としない機能を使用する場合があります。
  • ライブラリを使用するプログラムは、ライブラリのクライアントとも呼ばれます。

ライブラリに作成または含める関数には2つのタイプがあります-

  • 内部関数は、ライブラリ自体によってのみ使用されるものであり、ライブラリのクライアントはこれらの関数にアクセスする必要はありません。
  • 外部関数は、ライブラリのクライアントがアクセスできる関数です。

プログラムで扱うライブラリには、大きく2つのカテゴリがあります-

  • 静的ライブラリ
  • 動的ライブラリ

静的ライブラリ

  • 静的ライブラリ*は、外部プログラムがその機能を補完するために使用できる関数、クラス、またはリソースを含むファイルです。 ライブラリを使用するには、プログラマはライブラリへのリンクを作成する必要があります。 プロジェクトは、コンソールアプリケーション、Win32またはMFCアプリケーションにすることができます。 ライブラリファイルの拡張子はlibです。
  • ステップ1 *-新しいWin32プロジェクトを作成して、静的ライブラリの簡単な例を見てみましょう。

静的ライブラリ

  • ステップ2 *-[アプリケーションウィザード]ダイアログボックスで、[静的ライブラリ]オプションを選択します。

静的ライブラリ

  • ステップ3 *-[完了]をクリックして続行します。

静的ライブラリ

  • ステップ4 *-ソリューションエクスプローラーでプロジェクトを右クリックし、[追加]→[新しいアイテム]メニューオプションからヘッダーファイルを追加します。

静的ライブラリ

  • ステップ5 *-[名前]フィールドにCalculator.hと入力し、[追加]をクリックします。

ヘッダーファイルに次のコードを追加します-

#pragma once
#ifndef _CALCULATOR_H_
#define _CALCULATOR_H_
double Min(const double *Numbers, const int Count);
double Max(const double *Numbers, const int Count);
double Sum(const double *Numbers, const int Count);
double Average(const double *Numbers, const int Count);
long GreatestCommonDivisor(long Nbr1, long Nbr2);
#endif//_CALCULATOR_H_

ステップ6 *-プロジェクトにソース( .cpp)ファイルを追加します。

静的ライブラリ

  • ステップ7 *-[名前]フィールドにCalculator.cppと入力し、[追加]をクリックします。
  • ステップ8 *- *.cppファイルに次のコードを追加します-
#include "StdAfx.h"
#include "Calculator.h"
double Min(const double* Nbr, const int Total) {
   double Minimum = Nbr[0];
   for (int i = 0; i < Total; i++)
      if (Minimum > Nbr[i])
         Minimum = Nbr[i];
   return Minimum;
}
double Max(const double *Nbr, const int Total) {
   double Maximum = Nbr[0];
   for (int i = 0; i < Total; i++)
      if (Maximum < Nbr[i])
         Maximum = Nbr[i];
   return Maximum;
}
double Sum(const double *Nbr, const int Total) {
   double S = 0;
   for (int i = 0; i < Total; i++)
      S += Nbr[i];
   return S;
}
double Average(const double *Nbr, const int Total) {
   double avg, S = 0;
   for (int i = 0; i < Total; i++)
       S += Nbr[i];
   avg = S/Total;
   return avg;
}
long GreatestCommonDivisor(long Nbr1, long Nbr2) {
   while (true) {
      Nbr1 = Nbr1 % Nbr2;
      if (Nbr1 == 0)
         return Nbr2;
      Nbr2 = Nbr2 % Nbr1;
      if (Nbr2 == 0)
         return Nbr1;
   }
}
  • ステップ9 *-[ビルド]→[MFCLibのビルド]をクリックして、メインメニューからこのライブラリをビルドします。

静的ライブラリ

  • ステップ10 *-ライブラリが正常に構築されると、上記のメッセージが表示されます。
  • ステップ11 *-ライブラリからこれらの関数を使用するには、[ファイル]→[新規]→[プロジェクト]に基づく別のMFCダイアログアプリケーションを追加します。

静的ライブラリ

ステップ12 *-次のスナップショットに示すように、MFCLib \ Debugフォルダーに移動し、ヘッダーファイルと .libファイルをMFCLibTestプロジェクトにコピーします。

静的ライブラリ

  • ステップ13 *-ライブラリを現在のプロジェクトに追加するには、メインメニューで[プロジェクト]→[既存項目の追加]をクリックし、MFCLib.libを選択します。
  • ステップ14 *-次のスナップショットに示すようにダイアログボックスを設計します。

静的ライブラリ

  • ステップ15 *-値タイプがdoubleの両方の編集コントロールに値変数を追加します。

静的ライブラリ

  • ステップ16 *-ダイアログボックスの最後にある静的テキストコントロールの値変数を追加します。

静的ライブラリ

  • ステップ17 *-[計算]ボタンのイベントハンドラーを追加します。

ライブラリから機能を追加するには、ヘッダーファイルをCMFCLibTestDlg.cppファイルに含める必要があります。

#include "stdafx.h"
#include "MFCLibTest.h"
#include "MFCLibTestDlg.h"
#include "afxdialogex.h"
#include "Calculator.h"
  • ステップ18 *-ボタンイベントハンドラの実装です。
void CMFCLibTestDlg::OnBnClickedButtonCal() {
  //TODO: Add your control notification handler code here
   UpdateData(TRUE);
   CString strTemp;
   double numbers[2];
   numbers[0] = m_Num1;
   numbers[1] = m_Num2;

   strTemp.Format(L"%.2f", Max(numbers,2));
   m_strText.Append(L"Max is:\t" + strTemp);

   strTemp.Format(L"%.2f", Min(numbers, 2));
   m_strText.Append(L"\nMin is:\t" + strTemp);

   strTemp.Format(L"%.2f", Sum(numbers, 2));
   m_strText.Append(L"\nSum is:\t" + strTemp);

   strTemp.Format(L"%.2f", Average(numbers, 2));
   m_strText.Append(L"\nAverage is:\t" + strTemp);

   strTemp.Format(L"%d", GreatestCommonDivisor(m_Num1, m_Num2));
   m_strText.Append(L"\nGDC is:\t" + strTemp);

   UpdateData(FALSE);
}
  • ステップ19 *-上記のコードをコンパイルして実行すると、次の出力が表示されます。

静的ライブラリ

  • ステップ20 *-編集フィールドに2つの値を入力し、[計算]をクリックします。 ライブラリから計算した後、結果が表示されます。

静的ライブラリ

ダイナミックライブラリ

Win32 DLLは、Microsoft Windowsコンピューターで実行されるプログラムで使用できるライブラリです。 通常のライブラリとして、ファイルにグループ化された関数や他のリソースで構成されます。

DLLの略語は、ダイナミックリンクライブラリの略です。 つまり、静的ライブラリとは対照的に、DLLを使用すると、他のアプリケーションをこのタイプのライブラリにいつどのようにリンクするかをプログラマが決定できます。

たとえば、DLLを使用すると、さまざまなアプリケーションで必要に応じてライブラリを使用できます。 実際、異なるプログラミング環境で作成されたアプリケーションは、特定のDLLに保存されている関数またはリソースを使用できます。 このため、アプリケーションはライブラリに動的にリンクします。

  • ステップ1 *-新しいWin32プロジェクトを作成して、簡単な例を見てみましょう。

動的ライブラリ

  • ステップ2 *-[アプリケーションの種類]セクションで、[DLL]ラジオボタンをクリックします。

動的ライブラリ

  • ステップ3 *-[完了]をクリックして続行します。
  • ステップ4 *-MFCDynamicLib.cppファイルに次の関数を追加し、使用してその定義を公開します-
extern "C" _declspec(dllexport)
  • ステップ5 *-DLLの外部でアクセスされる各関数に_declspec(dllexport)修飾子を使用します。
//MFCDynamicLib.cpp : Defines the exported functions for the DLL application.//

#include "stdafx.h"

extern "C" _declspec(dllexport) double Min(const double *Numbers, const int Count);
extern "C" _declspec(dllexport) double Max(const double *Numbers, const int Count);
extern "C" _declspec(dllexport) double Sum(const double *Numbers, const int Count);
extern "C" _declspec(dllexport) double Average(const double *Numbers, const int Count);
extern "C" _declspec(dllexport) long GreatestCommonDivisor(long Nbr1, long Nbr2);

double Min(const double *Nbr, const int Total) {
   double Minimum = Nbr[0];
   for (int i = 0; i < Total; i++)
      if (Minimum > Nbr[i])
         Minimum = Nbr[i];
   return Minimum;
}
double Max(const double *Nbr, const int Total) {
   double Maximum = Nbr[0];
   for (int i = 0; i < Total; i++)
      if (Maximum < Nbr[i])
         Maximum = Nbr[i];
   return Maximum;
}
double Sum(const double *Nbr, const int Total) {
   double S = 0;
   for (int i = 0; i < Total; i++)
      S += Nbr[i];
   return S;
}
double Average(const double *Nbr, const int Total){
   double avg, S = 0;
   for (int i = 0; i < Total; i++)
      S += Nbr[i];
   avg = S/Total;
   return avg;
}
long GreatestCommonDivisor(long Nbr1, long Nbr2) {
   while (true) {
      Nbr1 = Nbr1 % Nbr2;
      if (Nbr1 == 0)
         return Nbr2;
      Nbr2 = Nbr2 % Nbr1;
      if (Nbr2 == 0)
         return Nbr1;
   }
}
  • ステップ6 *-DLLを作成するには、メインメニューで、メインメニューから[ビルド]> [MFCDynamicLibのビルド]をクリックします。

動的ライブラリ

  • ステップ7 *-DLLが正常に作成されると、出力ウィンドウにメッセージが表示されます。
  • ステップ8 *-Windowsエクスプローラーを開き、現在のプロジェクトのデバッグフォルダーを開きます。
  • ステップ9 *-dll拡張子を持つファイルとlib拡張子を持つ別のファイルが作成されていることに注意してください。

動的ライブラリ

  • ステップ10 *-dll拡張子でこのファイルをテストするには、ファイル→新規→プロジェクトから新しいMFCダイアログベースのアプリケーションを作成する必要があります。

動的ライブラリ

ステップ11 *-MFCDynamicLib \ Debugフォルダーに移動し、次のスナップショットに示すように、。dllおよび* .libファイルをMFCLibTestプロジェクトにコピーします。

動的ライブラリ

  • ステップ12 *-DLLを現在のプロジェクトに追加するには、メインメニューで[プロジェクト]→[既存のアイテムを追加]をクリックし、MFCDynamicLib.libファイルを選択します。
  • ステップ13 *-次のスナップショットに示すようにダイアログボックスを設計します。

動的ライブラリ

  • ステップ14 *-値タイプdoubleの両方の編集コントロールに値変数を追加します。

動的ライブラリ

  • ステップ15 *-ダイアログボックスの最後にある静的テキストコントロールの値変数を追加します。

動的ライブラリ

  • ステップ16 *-[計算]ボタンのイベントハンドラーを追加します。
  • ステップ17 *-DLLを使用しているプロジェクトでは、アクセスする各関数は_declspec(dllimport)修飾子を使用して宣言する必要があります。
  • ステップ18 *-MFCLibTestDlg.cppファイルに次の関数宣言を追加します。
extern "C" _declspec(dllimport) double Min(const double *Numbers, const int Count);
extern "C" _declspec(dllimport) double Max(const double *Numbers, const int Count);
extern "C" _declspec(dllimport) double Sum(const double *Numbers, const int Count);
extern "C" _declspec(dllimport) double Average(const double *Numbers, const int Count);
extern "C" _declspec(dllimport) long GreatestCommonDivisor(long Nbr1, long Nbr2);
  • ステップ19 *-ボタンイベントハンドラの実装です。
void CMFCLibTestDlg::OnBnClickedButtonCal() {

  //TODO: Add your control notification handler code here
   UpdateData(TRUE);

   CString strTemp;
   double numbers[2];
   numbers[0] = m_Num1;
   numbers[1] = m_Num2;

   strTemp.Format(L"%.2f", Max(numbers,2));
   m_strText.Append(L"Max is:\t" + strTemp);

   strTemp.Format(L"%.2f", Min(numbers, 2));
   m_strText.Append(L"\nMin is:\t" + strTemp);

   strTemp.Format(L"%.2f", Sum(numbers, 2));
   m_strText.Append(L"\nSum is:\t" + strTemp);

   strTemp.Format(L"%.2f", Average(numbers, 2));
   m_strText.Append(L"\nAverage is:\t" + strTemp);

   strTemp.Format(L"%d", GreatestCommonDivisor(m_Num1, m_Num2));
   m_strText.Append(L"\nGDC is:\t" + strTemp);

   UpdateData(FALSE);
}
  • ステップ20 *-上記のコードをコンパイルして実行すると、次の出力が表示されます。

動的ライブラリ

  • ステップ21 *-編集フィールドに2つの値を入力し、[計算]をクリックします。 DLLから計算した結果が表示されます。

動的ライブラリ