ライブラリの基礎 - DLLの作成(C/C++/MFC)

提供:MochiuWiki : SUSE, EC, PCB
2019年10月24日 (木) 22:24時点における192.168.1.24による版 (ページの作成:「== 概要 == MFCを使ったDLLには、以下の2つの種類がある。<br> # 1つ目は"拡張DLL"で、DLLを使用するEXEやDLLもMFCで作成する時にのみ…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

MFCを使ったDLLには、以下の2つの種類がある。

  1. 1つ目は"拡張DLL"で、DLLを使用するEXEやDLLもMFCで作成する時にのみ使うことができる。
  2. 2つ目は"MFCの共有DLLを使用"(Regular DLL)で、これは内部的にMFCそのものを持っているため、DLLを使用するEXEやDLLをMFCで作成しなくても使用できる。



DLLの作成方法

  • defファイルを作成しない場合

Visual Studioの[プロジェクト]→[プロパティ]を選択する。
[C++]→[プリプロセッサの定義]に"DLL"プリプロセッサを追加する。(“Stdafx.h”ファイルに”DLL”プリプロセッサを記載してもよい)

まず、"MainDLL.h"ファイルの先頭に以下のソースコードを追加する。

 MainDLL.h // ファイルの先頭に以下を追加する。
 
 #ifndef __MAINDLL_H__
 #define __MAINDLL_H__
 
 #ifdef DLL
    #define DLL_EXPORT	__declspec(dllexport)
 #else
    #define DLL_EXPORT	__declspec(dllimport)
 #endif
 
 // 以下略
 
 #endif	//__MAINDLL_H__


次に、上記の"MainDLL.h"ファイルにエクスポートしたい関数を以下のように記載する。

 MainDLL.h
 
 #ifdef __cplusplus
    extern "C"
    {
 #endif
 
 DLL_EXPORT int WINAPI SampleFunc(CString &p_rcStr, CWnd *p_pcWnd);
 
 #ifdef __cplusplus
    }
 #endif


"MainDLL.cpp"ファイルの先頭に以下を記載する。

 MainDLL.cpp
 
 #include "StdAfx.h"
 #include "MainDLL.h"


"MainDLL.cpp"ファイルにて関数を作成する時は、以下のように記載する。

 MainDLL.cpp
 
 extern "C" int WINAPI SampleFunc(CString &p_rcStr, CWnd *p_pcWnd)
 {
    // 以下略
 }