1

websocketpp と MySQL の両方を使用する C++ アプリを構築しようとしています。VS 2010 C++ Express を使用して 2 つのビルドの問題が発生しました。

1) ブースト ライブラリの問題。次のような多くのエラーが発生します。

 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'

210 行目から始まる thread_data.hpp の関連するスニペットを次に示します。

inline BOOST_SYMBOL_VISIBLE void sleep(TimeDuration const& rel_time)
    {
        interruptible_wait(detail::pin_to_zero(rel_time.total_milliseconds()));
    }

2)ここに文書化されている VERSION という単語との競合は、独立していると私は信じています。

ブースト ビルドの問題の明確で単純な例を作成するために、websocketpp の例を使用しています: echo_server.cppにこれらを追加しました:

#include "stdafx.h" 

Boost lib インクルードは、websocketpp サイトの「Building a program with 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ヘッダーには含まれています。これら 2 つの boostincludes を追加すると、ビルド エラーが発生します。これら 2 つのインクルードをコメントアウトすると、エラーなしでビルドされます。

#include <my_global.h>
#include <mysql.h>

ブーストの問題に対処する方法について何か提案はありますか?

これは、「MinGW で websocket++ をビルドしようとしています: 最後のいくつかのリンカー エラー — 何が原因でしょうか?」と同じビルドの問題ではないと思います。

4

1 に答える 1

0

最初のエラーについては、コードに干渉するマクロがないかどうかを確認してください。右クリックして定義に移動するか、ファイルの先頭にあるマクロを自分で #define して、再定義される場所を確認します。非常に難しいケースでは、コンパイラ フラグを介してプリプロセッサの出力を確認します。

残りに関しては、Boost と MySQL のバージョンを提供していません。次に、my_global.h (または MySQL の一部ですか?) と stdafx.h があります。これらは両方とも管理下にありますが、ここでは表示されません。また、問題を可能な限り小さなコードに減らすようにしてください。要するに、再現可能な例を提供します。

于 2013-01-25T06:33:22.610 に答える