【问题标题】:LNK2001: Unresolved external symbol "class ATL::CStringT..."LNK2001:未解析的外部符号“类 ATL::CStringT ...”
【发布时间】:2011-02-23 00:38:27
【问题描述】:

我收到以下错误:

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,但我无法解决错误。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多