繁体   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