Visual Studioで遊んでいると、理解できないエラーが見つかりました。クラスをエクスポートするDLLを作成しました。別のDLLプロジェクトを作成し、最初のDLLクラスをメンバー変数として使用しようとすると、宣言方法によっては機能しません。
これは最初のDLLクラスです。
class LOCKING_API CCriticalSection {
public:
CCriticalSection(void);
~CCriticalSection(void);
void Enter(void);
void Leave(void);
BOOL TryEnter(void);
private:
CRITICAL_SECTION CriticalSection;
};
2番目のDLLの場合:
#include "../Locking/Locking.h"
class APPLICATION_API CApplication {
public:
static CApplication* instance(void);
private:
CApplication(void);
static CApplication* pInstance;
static CCriticalSection CritSect;
};
コンパイルしようとすると、次のエラーが発生します。
Application.obj : error LNK2001: unresolved external symbol "private: static class CCriticalSection CApplication::CritSect" (?CritSect@CApplication@@0VCCriticalSection@@A)