2013-02-12 3 views
0

Im пытаюсь создать проект Windows XP с помощью Visual Studio 2010 с помощью наддува версии 1.53.0 (что должно иметь значение, объяснит)здания с усилением ASIO

erros связаны с классом в socket_option.hpp:

 
template <int Level, int Name> 
class boolean 
{ 

как я уже упоминал выше, этот класс hasnt изменился с первой версией 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

Показать код topsecret – PSIAlt

+0

код очень большой, проблема в том, что я не получаю ссылку на ошибку ни на один из моих кодов, все ошибки исходят из socket_option.hpp и всех обычаев этого булевого класса, например. в socket_base.hpp, tcp.hpp и т. д. – Pinker

+0

Я определил, какой объект вызывает ошибки. Если я исключил его из компиляции, он успешно компилируется, странно, что этот класс не имеет ничего общего с сокетами, он даже не ссылается ни на что из что файлы, поэтому я просто изменил include boost/asio.hpp для повышения/asio/io_service.hpp (так как мне нужен только этот), и это работает, но еще одна странность в том, что другая цель, которую Im building использует для этих заголовков сокетов, и она компилируется просто отлично с целым asio.hpp .. – Pinker

ответ

0

Убедитесь, что вы ссылаетесь на надлежащее Boost. Это можно сделать из Visual Studio, выбрав свойства из меню проекта или щелкнув правой кнопкой мыши по проекту из браузера решений и выбрав свойства. Выберите C/C++, а в дополнительных каталогах укажите путь к месту установки Boost. В моей системе, где я использую Visual Studio 2008, у меня установлен Boost 1.52.0 под моим C: \ Program Files. Итак, вот что выглядит в моей системе:

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: \ Users \ Bob \ Documents \ Visual Studio 2008 \ Projects \ Win32Client \ OpenSSL-Win32 \ Lib \ VC \ статичным;

и

libeay32MDd.lib ssleay32MDd.lib

, который вводится в разделе компоновщика/входов.

Я не смог построить 64-битную версию библиотек OpenSSL через Boost и уже отправил отчет об ошибке. Однако 32-разрядная версия прекрасно работает.

+0

Thx, но это не должно быть проблемой, я использую CMake для генерации всего решения VS, поэтому мне не нужно ничего устанавливать в VS, но, как я уже упоминал выше в комментариях, я решил это, используя boost/asio/io_service.hpp вместо boost/asio.hpp – Pinker

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