我正在尝试使用Visual Studio 2010在Windows XP上构建项目 使用boost版本1.53.0(这应该很重要,将解释)
erros与socket_option.hpp中的类相关:
template <int Level, int Name> class boolean {
正如我上面提到的,这个类没有从boost 1.35.0中的第一版asio改变
我收到这些错误:
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?)
也会在该类的使用中产生更多错误
答案 0 :(得分:0)
确保您引用了正确的Boost包含。这可以从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:\ Users \ Bob \ Documents \ Visual Studio 2008 \ Projects \ Win32Client \ OpenSSL-Win32 \ lib \ VC \ static;
和
libeay32MDd.lib ssleay32MDd.lib
在链接器/输入部分下输入。
我无法通过Boost使用64位版本的OpenSSL库构建,并且已经提交了错误报告。 32位版本虽然很好。