DLLについて質問です。
現在、DLLからDLLを参照するプログラムを拡張DLLで作成しております。
呼び出されるDLL::Bのコンパイルが出来たので、
クライアントDLL::Aからディレクトリ参照してビルドを行うと、、、
error C2079:'clsB' uses undefined class 'DLL_EXPORT_DO'
というエクスポートマクロの宣言がないというエラーが発生してしまいます。
DLL_EXPORT_DO宣言はDLL::B側のstdAfx.h内に記述しております。
以下、ソース抜粋
/* Bプロジェクト clsB.h */
class DLL_EXPORT_DO clsB
{
public:
clsB();
virtual ~clsB();
/*メンバ関数 or メンバ変数*/
}
/* Bプロジェクト Def.h(マクロファイル) */
#ifdef DLL_EXPORT_DO
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
クライアントDLL:AにはDLL_EXPORT_DO宣言がないためdllimportになるはずなのですが。。。
原因がまったく分かりません。
どなたかご教授ください。
違うような。
>class DLL_EXPORT_DO clsB
ではなく
class DLL_EXPORT clsB
では?
でclsBのインプリメントファイル(clsB.cppとする)で
#define DLL_EXPORT_DO
#include "clsB.h"
としてDLLを作成し、
クラスAのプロジェクトでは単に
#include "clsB.h"
とするだけで、DLL_EXPORT_DOが宣言されていないので
__declspec(dllimport)になるのです。
Blueさん
ありがとうございます!
できました!
ツイート | ![]() |