【问题标题】:Link error: unresolved operator << for std::basic_ostream with CStringT链接错误:带有 CStringT 的 std::basic_ostream 的未解析运算符 <<
【发布时间】:2011-01-09 00:47:54
【问题描述】:

我刚刚重新组织了我的 Visual C++ (7.1) 项目的一些库,但遇到了无法解决的链接器问题。

该项目链接 MFC 以及标准 Windows 库,所有 MBCS

某处,有类似的东西:

std::stringstream sstr; sstr

(这一行以及其他一些行需要

一切都很好,直到我将 2 个其他库合并到 1 个库中(只是将代码/文件从 a 移动到 b 而没有太大变化)

突然间,我所有的 exe 都产生了链接器错误:

BasicFunctionsD.lib(CAccess.obj) : 错误 LNK2019: 无法解析的外部符号“class std::basic_ostream > & __cdecl operator &,class ATL::CStringT > > const &)” (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitCRT@D@ATL@@@@@ATL @@@Z) 在函数“protected: void __thiscall CAccessor::CreateCategory(int,char const *,char const *)”中引用 (?CreateCategory@CAccessor@@IAEXHPBD0@Z)

(以上代码不受库合并的影响,至少没有直接影响)

据我所知,基本 ostream 和 CString 的

也许找不到包含 MFC 版本的 basic_ostream 的库?

但我不知道如何解决它,甚至不知道从哪里开始寻找真正的问题。

任何提示都会很好

【问题讨论】:

    标签: c++ mfc


    【解决方案1】:

    参数...

    原因很简单:没有带有 CString 的 std::ostream 运算符...这是我自己的代码,我只是不记得了... :( 在清理过程中,函数进入命名空间并丢失了

    天啊!

    名称空间 StupidcleanupIshouldNotHavedone { std::ostream & 运算符

    【讨论】:

      【解决方案2】:

      我可能错了,但 IIRC 我确实遇到了未解决链接的问题。解决方案准备好了......#include &lt;string&gt;。结果是其中一个标题定义了字符串,我能够正常使用字符串并且编译没有问题。但是,由于我忘记了标题,所以没有静态实现,所以可能你缺少一个。

      【讨论】:

      • 我不认为这可能是 std::string 的问题,MFC 的 CStringT 运算符/到 std::basic_*stream 的接口似乎是问题所在。但我密切关注 包含
      猜你喜欢
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多