簡體   English   中英

Boost C ++庫產生奇怪的錯誤

[英]Boost C++ libraries generating strange errors

我最近嘗試編寫一個c ++程序,在其中使用了可以在Boost庫中找到的內置套接字工具。 首先,我嘗試制作一個基於客戶端/服務器的程序,其中服務器僅發送一條消息,而客戶端接收該消息。 工作正常。

然后,我編寫了另一個程序,在其中使用Xbox 360 kinect來控制移動。 創建第一個程序的想法是獲取套接字創建的代碼,因此我可以使用我的kinect與我的三星電視連接,以控制電視。

當我使用kinect將代碼從第一個程序復制到第二個程序時,就會出現問題。 突然,在編譯boost庫時,程序給出100+錯誤。

我對包含庫和所有庫進行了三重檢查,但是問題仍然存在。 下面列出了一些錯誤:

 1>C:\boost_1_55_0b1\boost/asio/detail/socket_types.hpp(96): error C2143: syntax error : missing ';' before '.'
 1>C:\boost_1_55_0b1\boost/asio/detail/socket_types.hpp(96): error C2238: unexpected  token(s) preceding ';'
 1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2224): error C2653: 'Windows' : is not a class or namespace name
 1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2224): error C2871: 'Collections' : a namespace with this name does not exist
 1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2225): error C2653: 'Windows' : is not a class or namespace name
 1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2225): error C2871: 'Networking' : a namespace with this name does not exist
 1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2226): error C2653: 'Windows' :  is not a class or namespace name
1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2226): error C2871: 'Connectivity' : a namespace with this name does not exist
1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2227): error C2065: 'IVectorView' : undeclared identifier
1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2227): error C2065: 'HostName' : undeclared identifier
1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2227): error C2059: syntax error : '>'
1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2227): error C2653: 'NetworkInformation' : is not a class or namespace name
1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2228): error C2065: 'hostnames' : undeclared identifier
1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2228): error C2227: left of '->Size' must point to class/struct/union/generic type
1>          type is ''unknown-type''
1>C:\boost_1_55_0b1\boost/asio/detail/impl/socket_ops.ipp(2230): error C2065: 'HostName' : undeclared identifier

還有許多其他。 我實際上知道這些庫可以工作。 它在第一個程序中起作用,所以我只是不知道是什么引起了問題。

其他包括用於C ++的Kinect庫的SDL和SDK。

我也剛遇到這個。 通過在Visual Studio中的C ++編譯器選項中添加“ / P”選項並重新編譯失敗的文件,我發現s_addr確實得到了#defined。

令人討厭的標題是Windows SDK inaddr.h ,該文件包含在winsock.h的標題鏈中。

標頭中有問題的行是: #define s_addr S_un.S_addr

關於這個標題的更多信息,MSDN上這里

我發現的解決方法是在BOOST ASIO標頭的#include之前#undef s_addr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM