我正在尝试构建一个同时使用 websocketpp 和 MySQL 的 C++ 应用程序。我在使用 VS 2010 C++ Express 时遇到了 2 个构建问题。
1) boost 库有问题。它会产生许多这样的错误:
1>c:\program files (x86)\boost\boost_1_50\boost\thread\win32\thread_data.hpp(210): error C2146: syntax error : missing ')' before identifier 'rel_time'
这是 thread_data.hpp 中从第 210 行开始的相关片段:
inline BOOST_SYMBOL_VISIBLE void sleep(TimeDuration const& rel_time)
{
interruptible_wait(detail::pin_to_zero(rel_time.total_milliseconds()));
}
2) 与记录在案的 VERSION 一词发生冲突 here我相信是独立的。
为了清楚和简单地说明 boost 构建问题,我使用了 websocketpp 示例:echo_server.cpp我添加的这些包括:
#include "stdafx.h"
Boost 库包括 websocketpp 站点上“使用 websocketpp 构建程序”推荐的内容。
#include <boost/regex.hpp>
#include <boost/random.hpp>
#include <boost/system/api_config.hpp>
#include <boost/system/config.hpp>
#include <boost/system/error_code.hpp>
#include <boost/system/system_error.hpp>
#include <boost/system/windows_error.hpp>
MySQL header 包括。添加这 2 个 boostincludes 会触发构建错误。如果我注释掉这 2 个包含,它会正确构建:
#include <my_global.h>
#include <mysql.h>
关于如何处理 boost 问题有什么建议吗?
我不认为这是同一个构建问题,“尝试使用 MinGW 构建 websocket++:最后几个链接器错误——它可能是什么?”
最佳答案
关于第一个错误,检查是否有任何宏干扰代码。右键单击并转到定义或自己在文件开头 #define 宏,然后查看它在哪里被重新定义。在非常困难的情况下,通过编译器标志查看预处理器输出。
关于其余部分,您不提供 Boost 和 MySQL 的任何版本。然后是 my_global.h(或者是 MySQL 的一部分?)和 stdafx.h,它们都在您的控制之下,但您没有在这里显示它们。此外,尝试将问题减少到尽可能小的代码段。简而言之,提供一个可重现的例子。
关于c++ - 在 Windows 上使用 websocketpp 和 MySQL boost 构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14514796/