DLLについて

解決


VC++6.0  2007-03-02 00:32:22  No: 64564

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-02 00:38:09  No: 64565

違うような。

>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-02 00:43:35  No: 64566

Blueさん

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加