链接错误:未解析的运算符<<对于带有CStringT的std :: basic_ostream

时间:2010-01-25 09:35:38

标签: c++ mfc

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

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

在某个地方,有类似的东西:

std :: stringstream sstr; sstr<< m_MyCStringVar<<的std :: ENDL;

(这一行以及其他一些需要<< for basic_stream和CString)

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

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

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

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

据我所知,<<找不到基本ostream和CString的运算符。

可能找不到包含MFC版本的basic_ostream的lib?

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

任何提示都会很好

2 个答案:

答案 0 :(得分:3)

参数...

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

D'哦!

namesspace StupidcleanupIshouldNotHavedone { std :: ostream& operator<<(std :: ostream& s,const CString& str) {     s<< (LPCTSTR)STR;     回归; } }

答案 1 :(得分:1)

我可能错了,但我确实遇到了未解决的链接问题。解决方案准备就绪...... #include <string>。原来其中一个头定义了字符串,我能够正常使用字符串并编译没有问题。但是没有静态实现,因为我忘记了标题,所以也许你错过了。