2013-02-12 127 views
0

我試着使用Visual Studio 2010 使用boost版本1.53.0建立在Windows XP中的一個項目(這應該的問題,會解釋)建設與提升ASIO

誤差修改在socket_option.hpp相關類:

 
template <int Level, int Name> 
class boolean 
{ 

正如我上面提到的,這個類處理不當從ASIO的第一個版本改變了升壓1.35.0

我得到這些錯誤:

 
D:\work\extern\include\boost/asio/detail/socket_option.hpp(34): error C2332: 'class' : missing tag name 
D:\work\extern\include\boost/asio/detail/socket_option.hpp(34): error C3306: 'boost::asio::detail::socket_option::': unnamed class template is not allowed 
D:\work\extern\include\boost/asio/detail/socket_option.hpp(34): error C2628: 'boost::asio::detail::socket_option::' followed by 'int' is illegal (did you forget a ';'?) 
D:\work\extern\include\boost/asio/detail/socket_option.hpp(35): error C2143: syntax error : missing ';' before '{' 
D:\work\extern\include\boost/asio/detail/socket_option.hpp(35): error C2447: '{' : missing function header (old-style formal list?) 

這也給了該類別使用中的更多錯誤

+1

顯示您的最頂尖的密碼 – PSIAlt 2013-02-12 13:14:24

+0

代碼是有點大,問題是我沒有得到任何我的代碼的錯誤引用,所有的錯誤來自socket_option.hpp,以及該布爾類的所有用法,例如在socket_base.hpp,tcp.hpp等 – Pinker 2013-02-12 14:20:57

+0

我確定哪個對象導致錯誤..如果我從編譯中排除它編譯成功,奇怪的事情是,該類與套接字無關,它甚至不引用任何該文件,所以我只是改變包括升壓/ asio.hpp升壓/ asio/io_service。hpp(因爲我只需要這個),它的工作原理,但另一個奇怪的是,我建設的另一個目標是使用這些套接字頭,它編譯整個asio.hpp很好.. – Pinker 2013-02-12 14:43:15

回答

0

請確保您引用了正確的Boost includes。這可以通過從Visual Studio中選擇項目菜單中的屬性或從解決方案資源管理器中右鍵單擊項目並選擇屬性來完成。選擇C/C++並在其他包含目錄下輸入安裝Boost的路徑。在我使用Visual Studio 2008的系統上,我的C:\ Program Files文件路徑下安裝了Boost 1.52.0。所以,這就是我的系統上的設置:

C:\ Program Files \ boost_1_52_0 \;

如果您也使用OpenSSL,那麼您還需要指定安裝路徑。在我的系統上,它看起來像這樣:

C:\ Users \ Bob \ Documents \ Visual Studio 2008 \ Projects \ Win32Client \ OpenSSL-Win32 \ include \ C:\ Users \ Bob \ Documents \ Visual Studio 2008 \ Projects \ Win32Client \ OpenSSL-Win32 \ include \ openssl \;

您還需要指定庫路徑,以便鏈接器能夠正確構建。因此,在「屬性」對話框下,選擇「鏈接器」,然後在「其他庫目錄」下輸入正確的lib文件夾的路徑。在我的系統上,它看起來像:

C:\ Program Files \ boost_1_52_0 \ lib32 \;

如果使用SSL,你還需要:

C:\用戶\鮑勃\文檔\ Visual Studio 2008的\項目\ Win32Client \的OpenSSL的Win32 \ LIB \ VC \靜態的;

libeay32MDd.lib ssleay32MDd.lib

其下的鏈接器/輸入部分輸入。

我無法通過Boost與64位版本的OpenSSL庫一起構建,並且已經提交了錯誤報告。雖然32位版本可以很好地構建。

+0

Thx,但不應該是問題,我使用CMake生成整個VS解決方案,所以我不必在VS本身設置任何東西,但正如我在上面在評論中提到的,我解決了它通過使用boost/asio/io_service.hpp而不是boost/asio.hpp – Pinker 2013-02-13 07:35:59