2010-01-25 50 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; } }

相關問題