0

我正在尝试使用 Visual Studio 2010 使用 boost 版本 1.53.0 在 Windows XP 上构建一个项目(这应该很重要,将解释)

错误与 socket_option.hpp 中的类有关:

模板 <int 级别,int 名称>
布尔类
{

正如我上面提到的,这个类从 boost 1.35.0 中的第一个版本的 asio 没有改变

我收到这些错误:

D:\work\extern\include\boost/asio/detail/socket_option.hpp(34): 错误 C2332: 'class' : 缺少标签名称
D:\work\extern\include\boost/asio/detail/socket_option.hpp(34): 错误 C3306: 'boost::asio::detail::socket_option::': 不允许使用未命名的类模板
D:\work\extern\include\boost/asio/detail/socket_option.hpp(34): error C2628: 'boost::asio::detail::socket_option::' 后跟 'int' 是非法的(你忘了一个 ';'?)
D:\work\extern\include\boost/asio/detail/socket_option.hpp(35): 错误 C2143: 语法错误: 缺少';' 前 '{'
D:\work\extern\include\boost/asio/detail/socket_option.hpp(35): 错误 C2447: '{' : 缺少函数头(旧式正式列表?)

这也给该类的使用带来了更多错误

4

1 回答 1

0

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

C:\程序文件\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 位版本虽然构建良好。

于 2013-02-12T17:18:20.370 回答