LNK2001:未解析的外部符号“class ATL :: CStringT ...”

时间:2011-02-23 00:38:28

标签: visual-studio-2008 visual-c++

我收到以下错误:

Error   1   error LNK2001: unresolved external symbol "class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > __cdecl messageForCode(int,class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >)" (?messageForCode@@YA?AV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@HV12@@Z)    MyUIDlg.obj
Error   2   fatal error LNK1120: 1 unresolved externals C:\Documents and Settings\Administrator\Desktop\my-project\MyUI\Release\MyUI.exe

messageForCode在项目MyLibrary中定义,该项目编译为静态库。该库不依赖于MFC,因此使用“#include”包含CString。它本身编译得很好。

MyUI是一个由于上述错误而无法编译的.exe项目。它使用MFC。我的一个理论是MFC中的CString与atlstr.h中的CString之间存在冲突。我尝试在两个项目的设置中静态和动态地链接到ATL,但我无法解决错误。

1 个答案:

答案 0 :(得分:1)

messageForCode是用C还是用C ++实现的?如果它是用C实现的,你需要用'extern“C”'包装它的声明。