2013-04-24 132 views
3

我一直在嘗試編譯一些代碼,包括使用Visual Studio 2012的一些Boost類,並且我一直在接收關於多個聲明的錯誤。Visual Studio使用Boost編譯

1>c:\boost\boost_1_53_0\boost\tr1\memory.hpp(43): error C2874: using-declaration causes a multiple declaration of 'boost::bad_weak_ptr' 

這與從boost \ tr1 \ memory.hpp包含的其他幾個Boost類發生。

我檢查過是否有其他包含目錄和庫目錄,並且據我所知,但問題依然存在。任何人有任何想法?謝謝。

+0

也許你正在做類似「使用命名空間標準」的東西,而與Boost命名空間類似。請注意,[''](http://en.cppreference.com/w/cpp/header/memory)標頭公開['bad_weak_ptr'](http://en.cppreference.com/w/cpp/memory/bad_weak_ptr)。 – 2013-04-24 09:49:27

+0

據我可以告訴,我沒有使用任何命名空間爲我的代碼減主文件。 – Aetylus 2013-04-24 10:18:28

+0

這裏同樣的問題。我有一個使用命名空間升壓指令。我知道它也是在內存頭文件中定義的,但我沒有得到vc10和11之間的區別.vc11版本的行使用_STD shared_ptr。我通過刪除boost :: memory include來「解決」了我的問題。有人能詳細說明嗎? – anhoppe 2013-07-25 10:26:53

回答

0

問題是shared_ptr是C++ 11中std std :: tr1的一部分。由於VS2012(主要)符合C++ 11標準,因此boost \ tr1 \ memory.hpp和內存頭文件之間似乎存在命名空間衝突。

正如Mihai Todor指出的那樣,我認爲它確實可能與使用指令有關。在我的情況下,我可以刪除boost memory.hpp include。