我收到以下错误:
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,但我无法解决错误。
答案 0 :(得分:1)
messageForCode是用C还是用C ++实现的?如果它是用C实现的,你需要用'extern“C”'包装它的声明。