2013-10-14 2 views
1

Недавно я попытался написать программу C++, где я использовал встроенные инструменты сокета, которые можно найти в библиотеке Boost. Прежде всего, я попытался создать клиентскую/серверную программу, где сервер просто отправляет сообщение, а клиент получает его. Все прошло отлично.Boost C++ библиотеки, порождающие странные ошибки

Затем я написал еще одну программу, в которой я использовал Kinect Xbox 360, чтобы контролировать свое движение. Идея создания первой программы заключалась в том, чтобы получить код для создания сокета, поэтому я могу подключиться, например, к моему телевизору Samsung, для управления телевизором, используя мой kinect.

Проблема возникает при копировании кода из первой программы в мою вторую программу с помощью kinect. Внезапно программа дает 100+ ошибок при компиляции библиотеки boost.

Я проверил тройные библиотеки и все, но проблема все еще возникает. Ниже приводятся некоторые из этих ошибок:

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 

И многие другие. Я знаю, что библиотеки работают. Он работал в первой программе, поэтому я просто не могу понять, что вызывает проблему.

Другие включают в себя SDL и SDK для библиотек Kinect для C++.

+0

Проверьте, включены ли некоторые из невосстановительных заголовков #define один из следующих макросов: 'in4_addr_type'' u_long_type' 's_addr'. –

ответ

1

Я просто натолкнулся на это тоже. Я обнаружил, добавив параметр «/ P» к параметрам компилятора C++ в Visual Studio и перекомпилировав файл, который не удался, что s_addr действительно получил #defined.

Оскорбительный заголовок был частью Windows SDK inaddr.h, который включен в цепочку заголовков winsock.h.

ошибочная строки в заголовке была: #define s_addr S_un.S_addr

Больше информации об этом заголовке на MSDN here.

Исправление, которое я нашел, было #undef s_addr перед #include заголовка BOOST ASIO.

+0

Ты - ЧЕЛОВЕК! – Emadpres

Смежные вопросы