views:

195

answers:

2
+1  Q: 

Link error CString

I'm getting a linker error using CString the error is:

error LNK2001: unresolved external symbol "private: static class ATL::CStringT<wchar_t,class StrTraitMFC<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > CConfiguration::_campaignFolderPath" (?_campaignFolderPath@CConfiguration@@0V?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@A)

I have a class which is defined as:

class CConfiguration
{
private:
    static CString _campaignFolderPath;

public:
    static void Read();

private:
    CConfiguration(void);
    ~CConfiguration(void);
};

Its Read method is defined as:

void CConfiguration::Read()
{
    CConfigFile configReader(_T("Config.ini"));
    TCHAR temp[1024];

    configReader.GetStringValue(_T("Campaigns"), _T("CampaignsFolderPath"), temp);

    _campaignFolderPath = temp;
}

Any clues as to what is causing the error? I'm using Visual Studio 2008

+5  A: 

You need to instantiate the string, you're just declaring it as static now. Add:

CString CConfiguration::_campaignFolderPath;

in the implementation file.

unwind
error C2039: 'CString' : is not a member of 'CConfiguration'
hab
CString CConfiguration::_campaignFolderPath; thanks
hab
do edit your answer please, i believe its a typo
hab
@Manzoor: thanks, I swapped the symbols by mistake. :)
unwind
+3  A: 

Do you have an implementation line like the following somewhere?

CString CConfiguration::_campaignFolderPath;

Pete