2010-01-25 82 views
3

我刚刚重组了我的Visual C++(7.1)项目的一些库,并遇到了我无法解决的链接程序的问题。链接错误:无法解析的运算符<<用于std :: basic_ostream与CStringT

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

某处,有一样的东西:

的std :: stringstream的SSTR; sstr < < m_MyCStringVar < < std :: endl;

(这条线,以及一些其他需要< <为basic_stream和CString的)

一切都很好,直到我合并其他2个库到1个库(只是移动的代码/从一个文件B,不含太大变化)

突然,我所有的exe文件的生成链接器错误:

BasicFunctionsD.lib(CAccess.obj):错误LNK2019:无法解析的外部符号“类的std :: basic_ostream> & __cdecl操作< < (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的库?

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

任何提示将是很好

回答

1

我可能错了,但IIRC我与尚未解决的环节遇到问题。解决方案已准备就绪...... #include <string>。变成一个标头定义的字符串,我能够正常使用字符串,并没有问题编译。然而,由于我忘记了标题,所以也许没有静态实现,所以可能是你的缺失。

+0

我不认为它可能是std :: string,MFC的CStringT操作符/ std :: basic_ *流的接口似乎是问题。但我一直关注包括 – RedFraggle 2010-01-25 15:33:41

3

参数...

原因很简单:没有用的CString的std :: ostream的操作......这是我自己的代码,我只是不记得... :( 在清理,该功能进入命名空间并迷路了

D'oh!

namesspace StupidcleanupIshouldNotHavedone { 的std :: ostream的&操作者< <(标准:: ostream的& S,常量CString & STR) { 小号< <(LPCTSTR)STR; return s; } }

相关问题