gpt4 book ai didi

c++ - Boost C++ 库生成奇怪的错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:53 27 4
gpt4 key购买 nike

我最近尝试编写一个 C++ 程序,其中我使用了可以在 Boost 库中找到的内置套接字工具。首先,我尝试制作一个基于客户端/服务器的程序,服务器只发送一条消息,客户端接收它。它工作得很好。

然后我写了另一个程序,我使用 Xbox 360 kinect 来控制我的 Action 。创建第一个程序的想法是获取创建套接字的代码,这样我就可以连接到我的三星电视,使用我的 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。

最佳答案

我也刚遇到。我发现通过将“/P”选项添加到 Visual Studio 中的 C++ 编译器选项并重新编译失败的文件,s_addr 确实得到了#defined。

有问题的 header 是 Windows SDK inaddr.h 的一部分,它包含在 winsock.h 的 header 链中。

header 中有问题的行是:#define s_addr S_un.S_addr

有关此 header 的更多信息位于 MSDN here 上.

我找到的修复方法是在 BOOST ASIO header 的#include 之前添加#undef s_addr

关于c++ - Boost C++ 库生成奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19355634/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com