2013-02-12 63 views
0

我试着使用Visual Studio 2010 使用boost版本1.53.0建立在Windows XP中的一个项目(这应该的问题,会解释)建设与提升ASIO

误差修改在socket_option.hpp相关类:

 
template <int Level, int Name> 
class boolean 
{ 

正如我上面提到的,这个类处理不当从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

显示您的最顶尖的密码 – PSIAlt 2013-02-12 13:14:24

+0

代码是有点大,问题是我没有得到任何我的代码的错误引用,所有的错误来自socket_option.hpp,以及该布尔类的所有用法,例如在socket_base.hpp,tcp.hpp等 – Pinker 2013-02-12 14:20:57

+0

我确定哪个对象导致错误..如果我从编译中排除它编译成功,奇怪的事情是,该类与套接字无关,它甚至不引用任何该文件,所以我只是改变包括升压/ asio.hpp升压/ asio/io_service。hpp(因为我只需要这个),它的工作原理,但另一个奇怪的是,我建设的另一个目标是使用这些套接字头,它编译整个asio.hpp很好.. – Pinker 2013-02-12 14:43:15

回答

0

请确保您引用了正确的Boost includes。这可以通过从Visual Studio中选择项目菜单中的属性或从解决方案资源管理器中右键单击项目并选择属性来完成。选择C/C++并在其他包含目录下输入安装Boost的路径。在我使用Visual Studio 2008的系统上,我的C:\ Program Files文件路径下安装了Boost 1.52.0。所以,这就是我的系统上的设置:

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:\用户\鲍勃\文档\ Visual Studio 2008的\项目\ Win32Client \的OpenSSL的Win32 \ LIB \ VC \静态的;

libeay32MDd.lib ssleay32MDd.lib

其下的链接器/输入部分输入。

我无法通过Boost与64位版本的OpenSSL库一起构建,并且已经提交了错误报告。虽然32位版本可以很好地构建。

+0

Thx,但不应该是问题,我使用CMake生成整个VS解决方案,所以我不必在VS本身设置任何东西,但正如我在上面在评论中提到的,我解决了它通过使用boost/asio/io_service.hpp而不是boost/asio.hpp – Pinker 2013-02-13 07:35:59