Exporting CString from a DLL
Hi All,
I'm trying to use a CString variable in a class that is exported from a
DLL and I'm getting the linker errors below. I changed the CString
declaration to CStringEx and exported that class like below which resulted
in the errors. If I take the regrettable step of commenting out the
declaration of CString, CStringA and CStringW in altstr.h (I'm not using MFC
at all) and replacing it with the corresponding CStringExA/W it seems
better, but that is solution I'd rather not do. Is there any other way to
use CString in a DLL.
Thanks,
EricW
class __declspec( dllexport ) Test
{
public:
CStringWEx m_strName;
};
CStringWEx is a class I derived from the base CString classes.
ServerEngine.lib(ServerEngine.dll) : error LNK2005: "public: __thiscall
ATL::CStringT<wchar_t,class ATL::StrTraitATL<wchar_t,class
ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,class
ATL::StrTraitATL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >(void)"
(??1?$CStringT@_WV?$StrTraitATL@_WV?$ChTraitsCRT@_W@ATL@@@ATL@@@ATL@@QAE@XZ)
already defined in AdminMsgs.obj
ServerEngine.lib(ServerEngine.dll) : error LNK2005: "public: __thiscall
ATL::CSimpleStringT<wchar_t,0>::operator wchar_t const *(void)const "
(??B?$CSimpleStringT@_W$0A@@ATL@@QBEPB_WXZ) already defined in AdminMsgs.obj
ServerEngine.lib(ServerEngine.dll) : error LNK2005: "public: class
ATL::CStringT<wchar_t,class ATL::StrTraitATL<wchar_t,class
ATL::ChTraitsCRT<wchar_t> > > & __thiscall ATL::CStringT<wchar_t,class
ATL::StrTraitATL<wchar_t,class ATL::ChTraitsCRT<wchar_t> >
>::operator=(class ATL::CStringT<wchar_t,class
ATL::StrTraitATL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > const &)"
(??4?$CStringT@_WV?$StrTraitATL@_WV?$ChTraitsCRT@_W@ATL@@@ATL@@@ATL@@QAEAAV01@ABV01@@Z)
already defined in ErrorLogOptionsDlg.obj
ServerEngine.lib(ServerEngine.dll) : error LNK2005: "public: __thiscall
ATL::CStringT<wchar_t,class ATL::StrTraitATL<wchar_t,class
ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,class
ATL::StrTraitATL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >(void)"
(??0?$CStringT@_WV?$StrTraitATL@_WV?$ChTraitsCRT@_W@ATL@@@ATL@@@ATL@@QAE@XZ)
already defined in AdminMsgs.obj
http://msdn2.microsoft.com/en-us/library/ms174286(VS.80).aspx