2016-07-12 7 views
1

TL; DRブーストの使い方ASIOと打ち鳴らす/ C2

  • は、誰もが打ち鳴らす/ C2(に統合されて打ち鳴らす++フロントエンドでブーストASIOを(ブーストバージョンは1.61である)を使用することができましたVS2015アップデート3)?
  • 「はい」の場合は、どのオプションを使用しましたか?

私はブーストのASIOライブラリを使用するプログラムを持っています。 Ubuntu 14.04でMSVC++(VS2015 Update 3)をWin10とg ++ 4.8でコンパイルすると完璧に動作しますが、新しいバージョンのVisual Studioに同梱されているclangフロントエンドを使用したいと思っています(アップデート1以降と思います) 。 (プロジェクトのプロパティページからコピー)

私の最初のコマンドラインオプションは、このように見えた:私は、次のエラーました

-fpic "stdafx.h" -std=c++1y -fstack-protector "Clang\" -fno-strict-aliasing -ffunction-sections -g2 -gdwarf-2 -O0 -x c++-header -D "_WINSOCK_DEPRECATED_NO_WARNINGS" -D "NOMINMAX" -frtti -fomit-frame-pointer -fdata-sections -fno-ms-compatibility -std=c11 -fexceptions -o "Clang\%(filename).obj" -fms-extensions -fno-short-enums

:だから、明らかに使用するために疲れ後押し

void __cdecl boost::detail::atomic_increment(struct __clang::_Atomic<int> *)': Unexpected atomic instruction -- use Windows interlock intrinsics 

を打ち鳴らします/ VC++でコンパイルしたときに使用するウィンドウ固有の組み込み関数を使用する代わりに、clang/c2バージョンではサポートされていないgcc組み込み関数を使用します。

-U "__clang__" 

を処分した:私は別のコンパイラオプションとどんな効果がしたこと持っているように見えただけのもので遊ん(コマンドラインに次のオプションを追加すること)__clang__プリプロセッサシンボルを非定義原子エラーが発生しましたが、今ではいくつかのboost mplマクロに関連するようなエラーメッセージの複数のページが表示されます。最初の数行は次のとおりです。

1> In file included from main.cpp:1: 
1> In file included from D:\mylibs\boost\include\boost/program_options.hpp:15: 
1> In file included from D:\mylibs\boost\include\boost/program_options/options_description.hpp:13: 
1> In file included from D:\mylibs\boost\include\boost/program_options/value_semantic.hpp:12: 
1> In file included from D:\mylibs\boost\include\boost/any.hpp:20: 
1> In file included from D:\mylibs\boost\include\boost/type_index.hpp:29: 
1> In file included from D:\mylibs\boost\include\boost/type_index/stl_type_index.hpp:40: 
1>D:\mylibs\boost\include\boost/mpl/if.hpp(131,23): error : too many arguments provided to function-like macro invocation 
1> BOOST_MPL_AUX_NA_SPEC(3, if_) 
1>      ^
1> D:\mylibs\boost\include\boost/preprocessor/facilities/expand.hpp(26,10) : note: macro 'BOOST_PP_EXPAND_I' defined here 
1> # define BOOST_PP_EXPAND_I(x) x 
1>   ^

誰にでも解決策がありますか?

私の質問は、この記事のようにブーストライブラリ自体を構築することではありません。Command parameters for b2 in order to build Boost libraries with Microsoft's Clang/C2はい、私はブーストからのclang/c2の正式なサポートはないことを知っていますが、私は誰かがブースト設定マクロの正しいセットを生成するハックを知っているのだろうかと思っていました。 クラン/ C2できれいにコンパイルするブーストヘッダを取得

答えて

5

クラン/ C2有用となるので、私たちはClang-styleアトミック組み込み関数のサポートに取り組んでいるために重要です。これらは、Clang/C2の将来のアップデートで利用可能になります。

私はまだクランでコンパイルしているときにブーストヘッダをハックために喜んでいる場合を除き、組み込み関数のMSVCバージョンを使用するようにブーストを説得する方法を認識していませんよ。

+0

ありがとうございました。テスト目的のために、誰かが私が何を変更しなければならないか正確に教えてもらえれば、私は実際にヘッダーをハックしようと思っています。今のところ私がわかっていなければ正しい設定を探しているブースト設定ヘッダーを掘り下げて、それが最初であれば可能ですか? – MikeMB

1

マクロをBOOST_SP_USE_STD_ATOMICにコンパイルオプションで定義してみるか、#includeのブーストヘッダの直前にしてください。

関連する問題