我有,只有當我添加下面一行到我的項目發生了非常奇怪的錯誤消息:奇怪的MFC/VC++鏈接錯誤(已定義的std ::列表<CRect>)
std::list<CRect> myVar;
值得注意它不必是一個std :: list,它可以是std :: vector或我假設的任何其他STL容器。
以下是錯誤消息:
錯誤1錯誤LNK2005: 「公共: __thiscall的std ::列表
::列表>(無效)」 (δλ0? $ @表@@ VCRect V'$ @分配器@@@ VCRect性病性病@@@ @@ QAE @ XZ) 在 已經定義SomeLowLevelLibrary.lib
錯誤消息中引用的低級別庫對我正在構建的項目不瞭解,它只具有核心低級功能,並且不處理高級別的MFC GUI。
我可以得到鏈接錯誤來,如果我改變的代碼行消失:
std::list<CRect*> myVar;
但我並不想破解它的緣故吧。
此外,如果我在堆棧或堆上創建變量,我仍然會得到相同的錯誤。
有沒有人有這方面的任何想法? 我在Vista Enterprise上使用Microsoft Visual Studio 2008 SP1。
編輯:上面的鏈接器錯誤是在std ::列表<>的構造,我也得到一個錯誤的析構函數,_Nextnode和清除功能。
編輯:在項目中的其他文件中,std :: vector不會鏈接,在其他文件中它可能是std :: list。我無法弄清楚爲什麼有些容器可以工作,有些則不能。 MFC鏈接在兩個庫中都是靜態的。在低級庫中,我們有一個從std :: list繼承的類。
編輯:底層庫沒有任何繼承自CRect的類,但它確實利用了STL。
您是否擁有SomeLowLevelLibrary.lib的代碼。如果如此,請瀏覽列表的源代碼並查看您獲得的回報。 –
2008-09-29 10:32:39
您能否提供有關您的項目和SomeLowLevelLibrary.lib的MFC庫(靜態,共享)鏈接的信息。 – 2008-09-29 10:45:59