DLLについて

解決


VC++6.0  2007-03-01 15:32:22  No: 64564  IP: 192.*.*.*

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になるはずなのですが。。。
原因がまったく分かりません。

どなたかご教授ください。

編集 削除
Blue  2007-03-01 15:38:09  No: 64565  IP: 192.*.*.*

違うような。

>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)になるのです。

編集 削除
VC++6.0  2007-03-01 15:43:35  No: 64566  IP: 192.*.*.*

Blueさん

ありがとうございます!
できました!

編集 削除