MFC標準DLLのヘッダ


ひる  2009-11-13 10:18:11  No: 71093  IP: [192.*.*.*]

Win32のDLLのプロジェクトを作ると、
「DLL名.h」には利用者側にそのまま渡せるような記述が用意されますが、
MFCの標準DLLだと、DLL用のアプリケーションクラスのヘッダになり、
ここにエクスポート関数やクラスや定数の宣言を書くわけにはいきません。

かといって別ヘッダを用意すると、
「DLL名.h」とは別の名前になり、ビルド後に名前を変えて渡したり、
DLL名とは別の名前のまま渡したりといった方法が必要になります。

みなさんはMFCの標準DLLを作成する場合、
配布用のヘッダ(DLL内でもインクルードしたい)は
どのように作成されておられますでしょうか。

編集 削除
...  2009-11-13 13:54:59  No: 71094  IP: [192.*.*.*]

「DLL名.h」は「DLL名app.h」なり「DLL名imp.h」にリネームして
新たに「DLL名.h」を作成する。
ソース中の
#include DLL名.h

#include DLL名app.h

#include DLL名imp.h
に書き換える。

> 配布用のヘッダ(DLL内でもインクルードしたい)
「DLL名.h」の先頭にお決まりの
#ifdef DLL名_EXPORTS
  #define DLL名_API __declspec(dllexport)
#else
  #define DLL名_API __declspec(dllimport)
#endif
を書いて、DLLのコンパイルスイッチのマクロにDLL名_EXPORTSを宣言しておく。
エクスポートする関数、クラスの先頭にDLL名_APIを付ける。

別に大した作業では有りませんが...

編集 削除
ひる  2009-11-16 09:50:03  No: 71095  IP: [192.*.*.*]

> 別に大した作業では有りませんが...

ご呈示いただきありがとうございます。
もちろんこの方法自体は難しいことではないと思いますが、
標準で用意されるファイルの名前をあとから変更するという作業を、
みなさん毎回されているということなのでしょうか?

編集 削除