DLL作成手順
MFC(Microsoft Foundation Classes)向けのDLL(Dynamic Link Library)をVisual Studio 2017で作成する手順は以下の通りです。
Visual Studio 2017を開く:
Visual Studio 2017を起動します。
新規プロジェクトの作成:
「ファイル」メニューから「新規作成」を選び、「プロジェクト」を選択します。
「Visual C++」のプロジェクトタイプを選択し、プロジェクトテンプレートとして「MFC DLL」を選択します。
プロジェクト設定:
プロジェクトの名前と保存場所を指定します。
「OK」をクリックしてプロジェクトを作成します。
MFC DLLウィザードの使用:
MFC DLLウィザードが開始されます。ここで、DLLの種類(通常のDLL、拡張DLLなど)やエクスポートするクラス、使用するMFCタイプ(共有DLL、静的ライブラリ)などのオプションを選択します。
ソースコードの編集:
ウィザードによって生成されたソースファイルとヘッダーファイルを編集して、必要な機能を実装します。
DLLが提供する関数やクラスを定義し、実装します。
ビルド:
「ビルド」メニューから「ソリューションのビルド」を選択して、DLLをビルドします。
テスト:
DLLをテストするために、別のアプリケーションからDLLを参照して使用します。
デバッグツールを使用して、DLL内の関数が正しく動作することを確認します。
デプロイ:
ビルドが成功したら、DLLをデプロイメント対象のシステムやアプリケーションに組み込みます。





#include "EntitySmtp.h"
#include <fstream>
#include <sstream>
void EntitySmtp::WriteToFile() const {
std::ofstream file("C:\\WORK\\MAILINFO.INF");
if (file.is_open()) {
// SMTP設定セクション
file << "[SMTP]\n";
file << "Server=" << m_Server << "\n";
file << "PortNo=" << m_Portno << "\n";
file << "Username=" << m_Username << "\n";
file << "Password=" << m_Password << "\n";
file << "MailTitle=" << m_MailTitle << "\n";
file << "MailMessage=" << m_MailMessage << "\n";
file << "To=" << Join(m_To, ";") << "\n";
file << "Cc=" << Join(m_Cc, ";") << "\n";
file << "Bcc=" << Join(m_Bcc, ";") << "\n";
file << "UseSSLTLS=" << (m_UseSSLTLS ? "true" : "false") << "\n";
file << "UseAuth=" << (m_UseAuth ? "true" : "false") << "\n";
file << "BccAddOther=" << (m_BccAddOter ? "true" : "false") << "\n";
file << "BccAddMine=" << (m_BccAddMine ? "true" : "false") << "\n";
file.close();
}
else {
// ファイルが開けなかった場合のエラー処理
// 適宜エラーログを出力するか、例外を投げるなどの処理をここに記述
}
}
// ヘルパーメソッド: ベクターの要素を文字列に連結する
std::string EntitySmtp::Join(const std::vector<std::string>& list, const std::string& separator) const {
std::ostringstream oss;
for (size_t i = 0; i < list.size(); ++i) {
oss << list[i];
if (i < list.size() - 1) {
oss << separator;
}
}
return oss.str();
}
#ifndef ENTITY_SMTP_H
#define ENTITY_SMTP_H
#include <string>
#include <vector>
class EntitySmtp {
public:
void WriteToFile() const;
std::string m_Server;
std::string m_Portno;
std::string m_Username;
std::string m_Password;
std::string m_MailTitle;
std::string m_MailMessage;
std::vector<std::string> m_To;
std::vector<std::string> m_Cc;
std::vector<std::string> m_Bcc;
bool m_UseSSLTLS;
bool m_UseAuth;
bool m_BccAddOter;
bool m_BccAddMine;
std::string EntitySmtp::Join(const std::vector<std::string>& list, const std::string& separator) const;
};
#endif
というプロジェクトで
SampleProjectMailManager
ダイナミックライブラリ(DLL)の WriteToFile
関数を呼び出して、適当な値を出力するには、いくつかのステップを踏む必要があります。ここでは、一般的な手順を説明します。
SampleProject
でMailManager
DLLを使用するためには、以下の手順に従って設定します。これには、DLLを作成し、その後にSampleProject
でDLLを利用する設定を行う必要があります。
ステップ 1: MailManager
DLLの作成
MailManager
DLLプロジェクトのセットアップ:EntitySmtp
クラスを含むDLLプロジェクトを作成します。- このDLLは、
EntitySmtp
クラスのインスタンスを生成し、そのメソッドをエクスポートする必要があります。
- エクスポート関数の定義:
MailManager
内でEntitySmtp
オブジェクトを生成し、WriteToFile
メソッドを呼び出すための関数をエクスポートします。このためには.def
ファイルを使用するか、__declspec(dllexport)
を使用します。

ステップ 2: SampleProject
でのDLLの使用

この設定により、SampleProject
からMailManager
DLLのWriteToFile
関数を呼び出し、指定した設定でファイルにデータを書き出すことができます。DLLの作成と使用は、特にパス設定や依存関係に注意が必要です。また、DLLと実行ファイルが同じランタイムライブラリを使用していることを確認してください。