Question

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

Was it helpful?

Solution

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

CString CConfiguration::_campaignFolderPath;

in the implementation file.

OTHER TIPS

Do you have an implementation line like the following somewhere?

CString CConfiguration::_campaignFolderPath;

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top