DLLの作成 −クラスのエクスポート−

ここでは、クラスをエクスポートするDLLの作成方法と、エクスポートされたクラスの使用方法を説明する。


DLLの作成方法
  1. DLLプロジェクトを生成する
    VC++の「ファイル」−「新規作成」メニューで新規作成ダイアログを開き、「プロジェクト」タブを選択する。 「MFC AppWizard(dll)」を選択し、プロジェクト名を「Class_DLL」としてOKボタンを押す。
    次の画面で、「作成するDLLの種類」を「MFCの拡張DLL(MFCの共有DLL使用)」とし、終了ボタンを押す。
    次の画面ではそのままOKボタンを押す。これでプロジェクトのスケルトンが完成する。

  2. クラスを追加する
    ここでは、例としてダイアログクラスを追加してみる。リソースエディタを使用してダイアログを作成し、 「挿入」−「クラスの新規作成」メニューでクラスを作成する。 クラスの種類は「MFCクラス」、クラス名は「CDllDialog」、ファイル名はデフォルトのまま、 基本クラスは「CDialog」、ダイアログIDは先に作成したものを指定する。
    ダイアログはデフォルトのままでもいいが、DLLのものであるとわかるようにキャプションを変更しておくとよい。

  3. クラスのヘッダーを修正する
    クラスを作成したら、ヘッダーファイルを修正する。修正個所は、以下の通り(赤い文字の部分を追加する)。
    	// ヘッダファイルでの記述 --------------------
    	#include "resource.h"
    
    	class AFX_EXT_CLASS CDllDialog : public CDialog
    	{
    	// コンストラクション
    	public:
    		CDllDialog(CWnd* pParent = NULL);   // 標準のコンストラクタ
    	……
    	};
    
    ここでresource.hをインクルードしているのにはわけがある。 後でEXEを作成するときにこのヘッダーファイルをインクルードする際に、 この記述がないとEXEのresource.hを参照しに行ってしまうので、ここで明記することでそれを防止する。

  4. ビルドし、Class_dll.dllを作成する。

作成したDLLを使う
  1. プロジェクトを作成する。「MFC AppWizard(exe)」を選択し、プロジェクト名をClass_EXEとする。 ダイアログベースで作成すること。

  2. ダイアログリソースを編集する。ボタンを貼り付け、IDを「IDC_BUTTON1」とする。また、ClassWizardを用いて、 IDC_BUTTONのBN_CLICKEDメッセージに対するハンドラ関数CClass_EXEDlg::OnButton1()を作成する。

  3. DLL関数の呼び出し
    ダイアログのソースファイルであるClass_ExeDlg.cppを開き、以下のように修正する。
    	#include "..\Class_Dll\DllDialog.h"
    
    	……
    
    	void CClass_ExeDlg::OnButton1() 
    	{
    		// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
    		CDllDialog dlg;
    		dlg.DoModal();
    	}
    
    注意したいのはヘッダーファイルDllDialog.hのインクルードである。 上記の場合は、ディレクトリ構成が以下のようになっているものとして指定してある。 ちなみにDllDialog.hが参照するリソースファイルresource.hもDllDialog.hと同じディレクトリ下に存在している。
    	c:\xxxx\Class_Dll\     DllDialog.hはここにある
    	c:\xxxx\Class_Dll\Debug\  ここにはClass_Dll.dllやClass_Dll.libがある)
    	c:\xxxx\Class_Exe\     上記のソースファイルClass_ExeDlg.cppはここにある
    
  4. .libファイルの準備
    .libファイルについては「DLLの作成(1)」の「ビルド及び実行の準備」 で示したように「プロジェクト」−「設定」メニューで設定してもよいが、 「プロジェクト」−「プロジェクトへ追加」−「ファイル」メニューからClass_Dll\Debugの下にあるClass_Dll.libを 直接指定してプロジェクトへ追加してもよい。この場合、 「ワークスペース」ウィンドウの「FileView」タブを選択したときに表示されるファイルの構成図に Class_Dll.libが追加されればOKである。

  5. プログラムの実行
    ビルドをしたら、先に作成したClass_Dll.dllをClass_Exe.exeファイルと同じディレクトリへコピーしてから実行すればよい。

目次へ